将 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()
.
时明确地执行此操作
我尝试 运行 以下代码,它是关于从句子中识别主题并将主题写入 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()
.