我尝试运行以下代码,即从句子中识别主题并将主题写入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()
我该怎么做才能解决这个问题?
答案 0 :(得分:0)
您写道要将主题写入Excel文件,但您正在编写完整令牌。您应该只根据Excel单元格编写令牌:
worksheet.write(row,col+1,str(tok._orth_))
str()
可能没有必要,但它不会受到伤害。
您可能也可以str(tok)
,尤其是在打印tok
使您成为主题时。使用print()
自动将tok
转换为字符串,您必须在使用worksheet.write()
时明确地执行此操作。