Благодаря "ALVAS" код отсюда, Named Entity Recognition with Regular Expression: NLTK и в качестве примера:NLTK Названный Распознавание объектов для столбца в наборе данных
from nltk import ne_chunk, pos_tag
from nltk.tokenize import word_tokenize
from nltk.tree import Tree
def get_continuous_chunks(text):
chunked = ne_chunk(pos_tag(word_tokenize(text)))
prev = None
continuous_chunk = []
current_chunk = []
for i in chunked:
if type(i) == Tree:
current_chunk.append(" ".join([token for token, pos in i.leaves()]))
elif current_chunk:
named_entity = " ".join(current_chunk)
if named_entity not in continuous_chunk:
continuous_chunk.append(named_entity)
current_chunk = []
else:
continue
return continuous_chunk
txt = 'The new GOP era in Washington got off to a messy start Tuesday as House Republicans,under pressure from President-elect Donald Trump.'
print (get_continuous_chunks(txt))
выход равен:
[ 'GOP' «Вашингтон», «Дом республиканцы», «Дональд Трамп»]
Я заменил этот текст с этим: txt = df['content'][38]
из моего набора данных, и я получаю этот результат:
[ 'Ина', 'Тори К.', 'Мартин Cuilla', 'Филипп К', 'John J Lavorato']
Этот набор данных имеет множество строк и один столбец с именем «содержание '. Мой вопрос: как я могу использовать этот код для извлечения имен из этого столбца для каждой строки и хранения этих имен в другом столбце и соответствующих строках?
import os
from nltk.tag import StanfordNERTagger
from nltk.tokenize import word_tokenize
from nltk.tree import Tree
st = StanfordNERTagger(stanford_classifier, stanford_ner_path, encoding='utf-8')
text = df['content']
tokenized_text = word_tokenize(text)
classified_text = st.tag(tokenized_text)
print (classified_text)
Спасибо так много. –
Не могли бы вы рассказать мне, хочу ли я сделать то же самое с этим кодом, что я могу сделать? –
Я добавил его на свой вопрос. Спасибо –