Извлечение сущности из фрейма данных с использованием spacy - PullRequest
0 голосов
/ 07 февраля 2020

enter image description here Я читаю содержимое из файла Excel, используя pandas ::

import pandas as pd
df = pd.read_excel("FAM_template_Update 1911274_JS.xlsx" )
df

При попытке извлечь объекты, используя spacy ::

import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp(df)
for enitity in doc.ents:
     print((entity.text))

Ошибка :: TypeError: Аргумент 'строка' имеет неправильный тип (ожидаемая строка, полученный DataFrame)

        On line(3)-----> doc = nlp(df)

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Ожидается, что Spacy не готов к работе с кадром данных как есть. Вы должны сделать некоторую работу, прежде чем сможете распечатать сущности. Начните с определения столбца, который содержит текст, который вы хотите использовать nlp. После этого извлеките его значение в виде списка, и теперь вы готовы к go. Давайте предположим, что имя столбца, содержащего текст, имеет имя Text.

for i in df['Question'].tolist():
    doc = nlp(i)
    for entity in doc.ents:
         print((entity.text))

. Это будет повторять каждый текст (строку) в вашем фрейме данных и печатать объекты.

0 голосов
/ 07 февраля 2020

Вам необходимо l oop через отдельные строки в вашем фрейме данных. Парсер НЛП и извлечение сущностей ожидает строку.

Например:

for row in range(len(df)):
    doc = nlp(df.loc[row, "text_column"])
    for enitity in doc.ents:
         print((entity.text))
...