Я пытаюсь написать код, который передает текст, который был разбит на токены и отфильтрован стоп-слова, а затем связан и помечен как тег. Тем не менее, я не уверен, в каком порядке я должен использовать теги. Вот что у меня на данный момент:
#### Stemming
ps = PorterStemmer() # PorterStemmer imported from nltk.stem
stemText = []
for word in swFiltText: # Tagged text w/o stop words
stemText.append(ps.stem(word))
#### POS Tagging
def tagging():
tagTot = []
try:
for i in stemText:
words = nltk.word_tokenize(i) # I need to tokenize again (idk why?)
tagged = nltk.pos_tag(words)
tagTot = tagTot + tagged # Combine tagged words into list
except Exception as e:
print(str(e))
return tagTot
tagText = tagging()
На первый взгляд это работает просто отлично. Однако, поскольку я остановился первым, pos_tag
часто неправильно маркирует слова. Например, он помечал «hous» как прилагательное, когда оригинальное слово действительно было существительным «house». Но когда я пытаюсь остановить после тегирования, это дает мне ошибку о том, что pos_tag
не может справиться с 'кортежами' - я предполагаю, что это как-то связано с тем, как стеммер форматирует список слов как [('come', 'VB'), ('hous', 'JJ')
, et c.
Должен ли я использовать другой стеммер / tagger? Или ошибка в моем коде?
Заранее спасибо!