Изменения
→Частеречная разметка
POS-тэгирование является неотъемлемой частью обработки естественного языка. Без частеречной разметки становится невозможным дальнейший анализ текста из-за возникновения неопределенностей в значениях слов. Данный алгоритм используется при решении таких задач как перевод на другой язык, определение смысла текста, проверка на пунктуационные и речевые ошибки. Также можно автоматизировать процесс определения хештегов у постов и статей, выделяя существительные в приведенном тексте.
Благодаря частому использованию POS-тэгирования на практике, существует много встроенных библиотек с готовыми реализациями. Например, NLTK, scikit-learn<ref>[https://scikit-learn.org scikit-learn]</ref>, spaCy, TextBlob , HunPOS<ref>[https://code.google.com/archive/p/hunpos/ HunPOS]</ref>, Standford POS Tagger<ref>[https://nlp.stanford.edu/software/tagger.shtml Stanford]</ref> и другие. Примеры использования некоторых библиотек:
* TextBlob (''стохастический метод''):
from textblob import TextBlob
print((token.text, token.pos_))
'''output:''' [('The', 'DT'), ('quick', 'JJ'), ('brown', 'JJ'), ('fox', 'NN'), ('jumps', 'NNS'), ('over', 'IN'), ('the', 'DT'), ('lazy', 'JJ'), ('dog', 'NN')]
* HunPOS:
from os.path import expanduser
home = expanduser("~")
from nltk.tag.hunpos import HunposTagger
_path_to_bin = home + '/hunpos-1.0-linux/hunpos-tag'
_path_to_model = home + '/hunpos-1.0-linux/en_wsj.model'
ht = HunposTagger(path_to_model=_path_to_model, path_to_bin=_path_to_bin)
text = "The quick brown fox jumps over the lazy dog"
ht.tag(text.split())
'''output:''' [('The', 'DT'), ('quick', 'JJ'), ('brown', 'JJ'), ('fox', 'NN'), ('jumps', 'NNS'), ('over', 'IN'), ('the', 'DT'), ('lazy', 'JJ'), ('dog', 'NN')]
* Stanford POS tagger
from os.path import expanduser
home = expanduser("~")
from nltk.tag.stanford import POSTagger
_path_to_model = home + '/stanford-postagger/models/english-bidirectional-distsim.tagger'
_path_to_jar = home + '/stanford-postagger/stanford-postagger.jar'
st = POSTagger(path_to_model=_path_to_model, path_to_jar=_path_to_jar)
text = "The quick brown fox jumps over the lazy dog"
st.tag(text.split())
'''output:''' [('The', 'DT'), ('quick', 'JJ'), ('brown', 'JJ'), ('fox', 'NN'), ('jumps', 'VBZ'), ('over', 'IN'), ('the', 'DT'), ('lazy', 'JJ'), ('dog', 'NN')]
== Библиотеки для NLP ==