Facing AttributeError: для tag_, использующего Spacy в Python
Я использую Spacy для "POS Tagging" и получаю ошибку ниже. У меня есть датафрейм, в котором есть столбец "описание", в котором мне нужно извлечь POS для каждого слова
Фрейм данных:
No. Description
1 My net is not working
2 I will be out for dinner
3 Can I order food
4 Wifi issue
Код:
import pandas as pd
read_data = pd.read_csv('C:\\Users\\abc\\def\\pqr\\Data\\training_data.csv', encoding="utf-8")
entity = []
for parsed_doc in read_data['Description']:
doc = nlp(parsed_doc)
a = [(X.text, X.tag_) for X in doc.ents]
entity.append(a)
Код выше выдает ошибку:
Ошибка: AttributeError: у объекта 'spacy.tokens.span.Span' нет атрибута 'tag_'
Тем не менее, тот же код работает нормально для атрибута "Метка", а также, если я использую одно предложение
doc = nlp('can you please help me to install wifi')
for i in doc:
print (i.text, i.tag_)
1 ответ
Решение
Это потому, что такие вещи, как ents
или же chunks
Spans, то есть коллекции токенов. Следовательно, вам нужно перебирать их отдельные токены, чтобы получить их атрибуты, такие как tag
или же tag_
>>> doc = nlp(u'Mr. Best flew to New York on Saturday morning.')
>>> [(X.text, X.tag_) for X in doc.ents]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <listcomp>
AttributeError: 'spacy.tokens.span.Span' object has no attribute 'tag_'
>>> [(X.text, X.tag_) for Y in doc.ents for X in Y]
[('Best', 'NNP'), ('New', 'NNP'), ('York', 'NNP'), ('Saturday', 'NNP'), ('morning', 'NN')]