spaCy nlp - позиции сущностей в строке, извлечение ближайших слов - PullRequest
0 голосов
/ 17 мая 2018

Допустим, у меня есть строка, и я хочу отметить некоторые объекты, такие как Организации.

строка = I was working as a marketing executive for Bank of India, a 4 months..

string_tagged = I was working as a marketing executive for [Bank of India], a 4 months..

Я хочу определить слова рядом с отмеченным объектом. Как я могу найти позиции помеченного объекта и извлечь слова рядом с объектом?

Мой код:

import spacy    
nlp = spacy.load('en')
doc = nlp(string)
company = doc.text
for ent in doc.ents:
    if ent.label_ == 'ORG':
        company = company[:ent.start_char] + company[:ent.start_char -1] +company[:ent.end_char +1] 
print company 

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

У меня работает следующий код:

doc = nlp(str_to_be_tokenized)
company = []
for ent in doc.ents:
     if ent.label_ == 'ORG' and ent.text not in company:
         company.append(ent.text)
print(company)

Второе условие в том, чтобы извлекать только уникальные названия компаний из моего блока текста.Если вы удалите его, вы получите все экземпляры 'ORG', добавленные в список вашей компании.Надеюсь, это сработает и для вас

0 голосов
/ 18 мая 2018

Как я понял из вашего вопроса, вы хотите слова рядом с тегом ORG:

import spacy    
nlp = spacy.load('en')
#string = "blah blah"
doc = nlp(string)
company = ""
for i in range (1, len(doc)-1)):
    if doc[i].ent.label_ == 'ORG':
        company = doc[i-1] + doc[i] + doc[i+1] # previous word, tagged word and next one            
print company 

знать о первой и последней проверке токена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...