Извлечение сущностей Википедии из текста
Есть ли способ, которым мы можем извлечь все объекты из Википедии из текста, используя Wikipedia2Vec? Или есть другой способ сделать то же самое.
Пример:
Text : "Scarlett Johansson is an American actress."
Entities : [ 'Scarlett Johansson' , 'American' ]
Я хочу сделать это на Python
Спасибо
2 ответа
Вот версия NLTK (может быть не так хороша, как SpaCy):
from nltk import Tree
from nltk import ne_chunk, pos_tag, word_tokenize
def get_continuous_chunks(text, chunk_func=ne_chunk):
chunked = chunk_func(pos_tag(word_tokenize(text)))
continuous_chunk = []
current_chunk = []
for subtree in chunked:
if type(subtree) == Tree:
current_chunk.append(" ".join([token for token, pos in subtree.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
text = 'Scarlett Johansson is an American actress.'
get_continuous_chunks(text)
Вы можете использовать spacy:
import spacy
import en_core_web_sm
nlp = en_core_web_sm.load()
doc = doc = nlp('Scarlett Johansson is an American actress.')
print([(X.text, X.label_) for X in doc.ents])
И вы получите:
[('Scarlett Johansson', 'PERSON'), ('American', 'NORP')]
Узнайте больше в просторной документации.