2015-08-16 3 views
-1

В моем приложении мне нужно использовать часть программного обеспечения, способного к: а) преобразование слова в их основные формы и б) найти, если они являются «существительных», «глаголы» и т.д.Морфология программное обеспечение для английского

Я нашел список программ, способных выполнять эту работу.

http://aclweb.org/aclwiki/index.php?title=Morphology_software_for_English

Кто-нибудь есть опыт работы с любой из них? Какой из них вы рекомендуете?

ответ

-1

Для выполнения этих задач вы можете использовать NLTK (Python).

Найти, если они являются 'существительные', 'глаголы' ...

Эта задача называется Part-of-speech tagging. Вы можете использовать функцию nltk.pos_tag. (См Peen Treebank tagset)

Преобразование слова в их основные формы

Эта задача называется lemmatization. Вы можете использовать функцию nltk.stem.wordnet.WordNetLemmatizer.lemmatize.

Пример

import nltk 
from nltk.stem.wordnet import WordNetLemmatizer 
from nltk.corpus import wordnet as wn 

penn_to_wn = lambda penn_tag: {'NN':wn.NOUN,'JJ':wn.ADJ,'VB':wn.VERB,'RB':wn.ADV}.get(penn_tag[:2], wn.NOUN) 

sentence = "The rabbits are eating in the garden." 
tokens = nltk.word_tokenize(sentence) 
pos_tags = nltk.pos_tag(tokens) 
wl = WordNetLemmatizer() 
lemmas = [wl.lemmatize(token, pos=penn_to_wn(tag)) for token, tag in pos_tags] 

Затем, если вы печатаете результаты:

>>> tokens 
['The', 'rabbits', 'are', 'eating', 'in', 'the', 'garden', '.'] 

>>> pos_tags 
[('The', 'DT'), 
('rabbits', 'NNS'), 
('are', 'VBP'), 
('eating', 'VBG'), 
('in', 'IN'), 
('the', 'DT'), 
('garden', 'NN'), 
('.', '.')] 

>>> lemmas 
['The', u'rabbit', u'be', u'eat', 'in', 'the', 'garden', '.'] 
+0

Какая разница между 'Морфология software' и' lemmatization'? Кроме того, вы знаете, как это можно сделать на C или C++? – SilverWarrior

+0

@SilverWarrior Я не знаю, что такое 'Morphology_software'. Где вы это видели? Лемматизация - это процесс группировки разных искаженных форм слова, чтобы их можно было анализировать как единый предмет (Википедия). Обычно задачи обработки естественного языка выполняются с использованием Python, Java или Perl ... Но вы можете найти некоторые эквивалентные инструменты для C++ [в этом списке Википедии] (https://en.wikipedia.org/wiki/Outline_of_natural_language_processing#Natural_language_processing_toolkits) , – clemtoy

+0

Большое спасибо за информацию, похоже, что вы знаете свои вещи. Сейчас я использую это программное обеспечение http://www.ling.helsinki.fi/kieliteknologia/tutkimus/hfst/ (здесь приведена демонстрация http://www.ling.helsinki.fi/cgi-bin/omor/omordemo. bash? wf = having & language = en & function = morphology & variant = apertium-mk-en). Он может конвертировать 'try' to 'try' и т. Д. То, что я пытаюсь сделать, это групповые слова, имеющие одинаковое значение. Как вы думаете, я должен использовать что-то из этого списка https://en.wikipedia.org/wiki/Outline_of_natural_language_processing#Natural_language_processing_toolkits? – SilverWarrior

Смежные вопросы