【发布时间】:2021-06-27 20:41:52
【问题描述】:
我正在尝试构建一个语料库并用 spacy 解析它。语料库由 2000 多个单独的文本文件组成,每个文本文件都有特定的文档元数据,例如文件名、性别、国家/地区等,存储在数据框中的每一行中。
到目前为止,我所做的是创建一个由元数据和 text_field 组成的 EXCEL 文件。 text_field 是存储实际文本的位置。然后我将它作为 pandas 导入,通过以下代码用 Spacy 解析 text_field;
import spacy
import pandas as pd
nlp = spacy.load('en_core_web_sm')
df = pd.read_excel('C:/Users/Desktop/Data.xlsx')
df['docs'] = list(nlp.pipe(df.text_field))
但是,我想遍历存储在数据框中的所有文档,并使用数据框中提供的元数据提取输出。
比如常见的Spacy输出是这样的;
doc = nlp('this is a test sentence')
for token in doc:
print(token.lemma_, token.text, token.pos_)
lemma / text / pos_
this this DET
be is AUX
a a DET
test test NOUN
sentence sentence NOUN
预期是这样的;
file(text/doc metadata) / lemma / text / pos_
text1 this this DET
text1 be is AUX
text1 a a DET
text1 test test NOUN
text1 sentence sentence NOUN
text2 this this DET
text2 be is AUX
text2 another another DET
text2 sentence sentence NOUN
- 当我应用 df['docs'] = list(nlp.pipe(df.text_field)) 时,docs 列仅包含文本,而不包含 doc 对象。
- 我应该如何继续获得预期的输出?这在带有 Quanteda 包的 R 中是可能的,创建语料库和标记化等,但是有没有办法在 Python 上使用 Spacy 做同样的事情?
【问题讨论】: