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