Я работаю над созданием шаблона Python для любого входного текста, который будет создавать
XML-записи каждого слова и к какому POS (часть речи) относится.
Я использую pos_tag из nltk, но когда я беру слово и пытаюсь пометить его, оно помечает каждую букву вместо всего слова.
for word in textList:
if word in typeList:
tokenRest += 1
else:
wordXML = '<word number="' + str(corpusList) + '">'
wordformXML = "<wordform>" + word + "</wordform>"
posTag = "<POS>" + str(pos_tag(word)) + "</POS>"
fullWordXML = wordXML + "\r\n" + wordformXML + "\r\n" + posTag + "\r\n"
resultList.append(fullWordXML)
typeList.append(word)
corpusList += 1
print (resultList)
В posTag = "<POS>" + str(pos_tag(word)) + "</POS>"
Я ожидаю, что pos_tag со словом в нем выведет словарь со словом и его POS-тегом. Я получаю словарь с каждой буквой слова с POS-тегом для каждой буквы. Как это:
Словоформа "кажущийся" выведена как <POS>[(\'s\', \'NN\'), (\'e\', \'NN\'), (\'e\', \'IN\'), (\'m\', \'NN\'), (\'i\', \'NN\'), (\'n\', \'VBP\'), (\'g\', \'NN\')]</POS>
, которая должна вывести вот так:
<POS>[(\'seeming\', \'NN\')]<POS>
Есть ли способ убедиться, что pos_tag работает для всего слова, или я должен использовать что-то еще?
PS: я работаю над извлечением только тега в виде строки из словаря, поэтому готовый код не будет выглядеть так. В настоящее время мне просто нужна помощь по этому вопросу.