Biblioteca de spaCy para extraer frases nominales: Error de valor: [E866] Se esperaba una cadena o ‘Doc’ como entrada, pero se obtuvo:
Actualmente estoy tratando de extraer frases sustantivas de oraciones.
Las oraciones se almacenaron en una columna en un archivo de Excel.
Aquí está el código usando Python:
import pandas as pd
import spacy
df = pd.read_excel("xxx.xlsx")
nlp = spacy.load("en_core_web_md")
for row in range(len(df)):
doc = nlp(df.loc[row, "Title"])
for np in doc.noun_chunks:
print(np.text)
Pero obtuve este error:
Traceback (most recent call last):
File "/Users/pusinov/PycharmProjects/textsummarizer/paper_term_extraction.py", line 10, in <module>
doc = nlp(df.loc[row, "Title"])
File "/Users/pusinov/PycharmProjects/textsummarizer/venv/lib/python3.9/site-packages/spacy/language.py", line 1002, in __call__
doc = self._ensure_doc(text)
File "/Users/pusinov/PycharmProjects/textsummarizer/venv/lib/python3.9/site-packages/spacy/language.py", line 1093, in _ensure_doc
raise ValueError(Errors.E866.format(type=type(doc_like)))
ValueError: [E866] Se esperaba una cadena o 'Doc' como entrada, pero se obtuvo: <class 'float'="">.
¿Alguien puede ayudarme a mejorar el código?
Muchas gracias.
P.D. Todavía soy nuevo en Python.
davy.ai
Parece que estás obteniendo un
ValueError
porque estás intentando pasar un número decimal en lugar de una cadena de texto o un objetoDoc
anlp
. Esto puede ser debido a que faltan valores en tu archivo de Excel.Para evitar este error, puedes añadir una comprobación de valores faltantes antes de pasar los datos a
nlp
. Aquí tienes una versión actualizada de tu código:En esta versión, primero comprobamos si el valor en la columna “Title” es una cadena de texto (
isinstance(title, str)
), y solo si lo es, lo pasamos anlp
. De esta manera, evitamos elValueError
causado por pasar valores que no son cadenas de texto anlp
.¡Espero que esto te ayude!