Я продолжаю бить стену, когда дело доходит до НЛТК. Однако я смог создать токен и классифицировать одну строку текста, если я попытаюсь применить сценарий к нескольким строкам, я получу токены, но он не возвращает категорию, которая является для меня самой важной частью.
import pandas as pd
import nltk
from nltk.tokenize import word_tokenize
from nltk.tag import pos_tag
+nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
nltk.download('maxent_ne_chunker')
nltk.download('words')
SENT_DETECTOR = nltk.data.load('tokenizers/punkt/english.pickle')
Пример:
ex = 'John'
ne_tree = nltk.ne_chunk(pos_tag(word_tokenize(ex)))
print(ne_tree)
Вывод:
(S (PERSON John/NNP))
Это именно то, что я ищу. Мне нужна категория, а не просто NNP.
Когда я применяю это к таблице, я просто получаю токен без категории.
Пример:
df = pd.read_csv('ex3.csv')
df
Ввод:
Order Text
0 0 John
1 1 Paul
2 2 George
3 3 Ringo
Код:
df['results'] = df.Text.apply(lambda x: nltk.ne_chunk(pos_tag(word_tokenize(x))))
df
Вывод:
print(df)
Order Text results
0 0 John [[(John, NNP)]]
1 1 Paul [[(Paul, NNP)]]
2 2 George [[(George, NNP)]]
3 3 Ringo [[(Ringo, NN)]]
Я получаю токены, и он работает во всех строках, но не дает мне категорию «ЛИЦО».
Мне действительно нужны категории.
Разве это невозможно? Спасибо за помощь.