将 spacy(python) 标记写入 excel 文件

writing spacy(python) tokens to an excel file

我尝试 运行 以下代码,它是关于从句子中识别主题并将主题写入 Excel 文件:

from nltk.tokenize import sent_tokenize
import spacy
import xlsxwriter
workbook = xlsxwriter.Workbook('Sub.xlsx')
worksheet = workbook.add_worksheet()
row=0
col=0
nlp = en_core_web_sm.load()
f=open("cdata.txt").read()
s=sent_tokenize(f)

for sent in sent_tokenize(f):
    worksheet.write(row, col, sent)
    doc=nlp(unicode(sent))
    print type(doc)
    for tok in doc:
        if tok.dep_=='nsubj':
             print type(tok)
             worksheet.write(row,col+1,tok)

但我在最后一行不断收到同样的错误:

 TypeError: Unsupported type <type 'spacy.tokens.token.Token'> in write()

我应该怎么做才能解决这个问题?

您写到要将主题写入 Excel 文件,但您写入的是完整标记。您应该只将令牌写入 Excel 个单元格:

            worksheet.write(row,col+1,str(tok._orth_))

str() 可能没有必要,但不会造成伤害。

你也可以只做 str(tok),特别是如果打印 tok 让你得到主题。使用 print() 会自动将 tok 转换为字符串,您必须在使用 worksheet.write().

时明确地执行此操作