У меня есть праздничный набор новостей, и я могу извлечь из них распознавание имен.Сначала я выяснил, как получить непрерывный NER (распознавание именованных сущностей) из списка предложений с помощью инструмента nltk
.Теперь я хочу разделить NER по теме, местоположению и основной теме и добавить их в качестве нового столбца.Вот то, что я попробовал:
from nltk import ne_chunk, pos_tag, word_tokenize
from nltk.tree import Tree
import nltk
nltk.download('maxent_ne_chunker')
nltk.download('words')
def get_continuous_chunks(text):
chunked = ne_chunk(pos_tag(word_tokenize(text)))
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
вот вывод вышеуказанной вспомогательной функции:
res=[]
for x in df.sentences:
ner=get_continuous_chunks(x)
res.append(ner)
[['Дженнифер Энистон', 'ITV', 'NBC', «Энистон»], [«Бранджелина»,
«Брэд Питт», «Анджелина Джоли», «Брэд», «Друзья», «Дженнифер Энистон», «Брэд Джен», «Анж», «Джен»,«Бранджелина Брэд», «Джен Брэд», «Анджелина»], [«Дженнифер Энистон», «США», «Энистон», «Нью-Йорк Пост», «InTouch»], [«Дженнифер Энистон», «Мексика»], ['Дженнифер Энистон', 'Друзья', 'Мэтт Лебланк', 'Звезда', 'Пол', 'Дженнифер'], ['Дженнифер Энистон', 'Джастин Теру', 'Мари Клэр',
'Энистон',' Huffington Post '], [' Дженнифер Энистон ',' Джастин Теру ',' Star Magazine ',' Дженнифер Энистон Дженнифер Энистон ',
' Брэд Питт ',' Брэд Питт Дженнифер Энистон ',' Анджелина Джоли ',
'Дженнифер']]
обновление: фрагмент текущего вывода :
вот фрагмент текущего вывода, я хочу извлечь person
,location
и другие event
и добавьте их в качестве нового столбца в исходный кадр данных.Вот что я получил:
Теперь я хочу дополнительно извлечь имя человека с помощью TFIDF
и news_source
, например New York Post
, Star Magazine
или аналогичный новый тип столбца.Я не знаю, как это сделать.Любые мысли, чтобы это произошло?
желаемый вывод :
в основном, я хочу изменить вывод непрерывного NER человеком, местоположением, источником в виде новых столбцов вdataframe.Вот мой пример вывода:
df=pd.DataFrame({'sentence':['longtextlongtextlongtextlongtextlongtext', 'longtextlongtextlongtextlongtextlongtext', 'longtextlongtextlongtextlongtextlongtext' ],'celebretity_name': ['Jennifer Aniston','Brad Pitt','Jennifer Aniston'], 'source':['NBC','Friends','New York Post']})
Может кто-нибудь указать мне, как это сделать?Можно ли разделить извлеченный NER на celebrity name
, news_source
как новый столбец в кадре данных?Какие-нибудь мысли?Спасибо