pandas - NLP:根据分隔符创建 spaCy Doc 对象或组合多个 Doc 对象以形成单个对象

标签 pandas nlp spacy named-entity-recognition

我正在尝试使用 make_doc() 函数创建一个 spaCy Doc 对象 (spacy.tokens.doc.Doc)。这就是我所做的:

import spacy
nlp = spacy.load('en')

a = nlp.make_doc("Sam, Software Engineer")
print(list(a)) # [Sam, ,, Software, Engineer]

但我想要的结果是:

print(list(a)) # [Sam, Software Engineer]

有没有办法根据分隔符(在我的例子中,它是逗号)创建一个宽敞的 Doc 对象?或者有没有一种方法可以将两个 spaCy Doc 对象合并为一个对象?例如:

a = nlp.make_doc("Sam")
b = nlp.make_doc("Software Engineer")
c = Combine a and b into single Doc object c
print(list(c)) # [Sam, Software Engineer]

最佳答案

您可以在用逗号分隔字符串后使用 Doc 类构建文档:

import spacy

nlp = spacy.load("en_core_web_sm")
text = "Sam, Software Engineer"

tokens = text.split(',')
words_t = [t.strip() for t in tokens]
whitespaces_t = [x[0].isspace() for x in tokens]
a = spacy.tokens.Doc(nlp.vocab, words=words_t, spaces=whitespaces_t)
print(list(a))
# => [Sam, Software Engineer]

words_t = [t.strip() for t in tokens] 部分抓取单词,whitespaces_t = [x[0].isspace() for x in tokens] 创建一个 bool 值列表,表示单词之前是否存在空格。

关于pandas - NLP:根据分隔符创建 spaCy Doc 对象或组合多个 Doc 对象以形成单个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67679041/

相关文章:

python - 使用 lambda 函数拆分 Pandas 数据集中的列

nlp - 'discourse vector' 在词/句子嵌入中是什么意思?

python - NLTK Tokenizer 编码问题

twitter - 从小文本内容(如推文)生成标签

python - 如何正确更新 spaCy 中的模型?

python - Spacy 将空格识别为实体

spacy - 使用 spacy.matcher.matcher.Matcher.add() 方法的问题

python - 用 csv 错误中的空格替换所有逗号

python - 根据其他列的条件将另一列的值插入到新列中

python - 来自 SciKit-Learn 的 LabelEncoder 的 TypeError