当前位置: 首页 > 知识库问答 >
问题:

将标记化SpaCy结果导出到Excel或SQL表

高增
2023-03-14

我正在使用SpaCyPandas将词性(POS)标记的句子导出到excel。代码如下:

import spacy
import xlsxwriter
import pandas as pd
nlp = spacy.load('en_core_web_sm')
text ="""He is a good boy."""
doc = nlp(text)
for token in doc:
    x=[token.text, token.lemma_, token.pos_, token.tag_,token.dep_,token.shape_, token.is_alpha, token.is_stop]
    print(x)

当我打印(x)时,我得到以下信息:

['He', '-PRON-', 'PRON', 'PRP', 'nsubj', 'Xx', True, False]
['is', 'be', 'VERB', 'VBZ', 'ROOT', 'xx', True, True]
['a', 'a', 'DET', 'DT', 'det', 'x', True, True]
['good', 'good', 'ADJ', 'JJ', 'amod', 'xxxx', True, False]
['boy', 'boy', 'NOUN', 'NN', 'attr', 'xxx', True, False]
['.', '.', 'PUNCT', '.', 'punct', '.', False, False]

对于令牌循环,我添加了如下数据帧:对于doc中的令牌:

for token in doc:
    x=[token.text, token.lemma_, token.pos_, token.tag_,token.dep_,token.shape_, token.is_alpha, token.is_stop]
    df=pd.Dataframe(x)
    print(df)

现在,我统计得到以下格式:

  0
0      He
1  -PRON-
2    PRON
3     PRP
4   nsubj
5      Xx
6    True
7   False   
........
........

但是,当我尝试使用Pandas作为以下代码将输出(df)导出到excel时,它只在列中显示x的最后一次迭代

df=pd.DataFrame(x)
writer = pd.ExcelWriter('pandas_simple.xlsx', engine='xlsxwriter')
df.to_excel(writer,sheet_name='Sheet1')

输出(在Excel表格中):

0
0      .
1      .
2  PUNCT
3      .
4  punct
5      .
6  False
7  False

在这个场景中,我如何让所有迭代一个接一个地出现在新列中,如下所示?

 0     He      is   ….
1    -PRON-    be   ….
2     PRON    VERB  ….
3     PRP      VBZ  ….
4    nsubj     ROOT ….
5      Xx      xx   ….
6    True     True  ….
7    False   True   ….

共有2个答案

仇飞鹏
2023-03-14

如果您还没有您的版本:

import pandas as pd

rows =[
    ['He', '-PRON-', 'PRON', 'PRP', 'nsubj', 'Xx', True, False],
    ['is', 'be', 'VERB', 'VBZ', 'ROOT', 'xx', True, True],
    ['a', 'a', 'DET', 'DT', 'det', 'x', True, True],
    ['good', 'good', 'ADJ', 'JJ', 'amod', 'xxxx', True, False],
    ['boy', 'boy', 'NOUN', 'NN', 'attr', 'xxx', True, False],
    ['.', '.', 'PUNCT', '.', 'punct', '.', False, False],
    ]

headers = ['text', 'lemma', 'pos', 'tag', 'dep', 
           'shape', 'is_alpha', 'is_stop']

# example 1: list of lists of dicts
#following  https://stackoverflow.com/a/28058264/1758363
d = []
for row in rows:
    dict_ = {k:v for k, v in zip(headers, row)}
    d.append(dict_)
df = pd.DataFrame(d)[headers] 

# example 2: appending dicts 
df2 = pd.DataFrame(columns=headers)
for row in rows:
    dict_ = {k:v for k, v in zip(headers, row)}
    df2 = df2.append(dict_, ignore_index=True)

#example 3: lists of dicts created with map() function
def as_dict(row):
    return {k:v for k, v in zip(headers, row)}

df3 = pd.DataFrame(list(map(as_dict, rows)))[headers]     

def is_equal(df_a, df_b):
    """Substitute for pd.DataFrame.equals()"""
    return (df_a == df_b).all().all()

assert is_equal(df, df2)
assert is_equal(df2, df3)
欧阳狐若
2023-03-14

一些较短的代码:

import spacy
import pandas as pd
nlp = spacy.load('en_core_web_sm')
text ="""He is a good boy."""
param = [[token.text, token.lemma_, token.pos_, 
          token.tag_,token.dep_,token.shape_, 
          token.is_alpha, token.is_stop] for token in nlp(text)]
df=pd.DataFrame(param)
headers = ['text', 'lemma', 'pos', 'tag', 'dep', 
           'shape', 'is_alpha', 'is_stop']
df.columns = headers  
 类似资料:
  • 问题内容: 我的要求是存储查询的整个结果 到Excel文件。 问题答案: 实现此目的的典型方法是导出为CSV,然后将CSV加载到Excel。 您可以使用任何MySQL命令行工具通过在语句中包含以下子句来执行此操作: 有关详细选项,请参见此链接。 另外,您可以使用mysqldump,使用– tab选项将转储存储为单独的值格式,请参见此链接。

  • 问题内容: 我试图将使用以下查询找到的结果导出到我的桌面上的CSV中。 这是我第一次使用Elasticsearch和cURL,因此我对如何执行此操作感到困惑。 现在,当我运行此查询时,它将返回戴夫的姓名,姓氏,地址和性别,并且我想在运行查询时将结果放入桌面上的csv中。 我一直在阅读有关如何执行此链接的操作,但是我不确定如何使我的查询执行此操作-(https://docs.python.org/3

  • 问题内容: 我想通过单击表单中的按钮将查询结果导出到excel文件。 为此,我使用了这段代码,并且效果很好: 但是我的查询使用了两个参数 sdate 和 edate ,我不想访问询问我这些值,但是我希望用户在带有适当文本框的表单中输入它们。 所以我在DoCMD.OutputTo之前的代码中添加了此位 但不幸的是,它不起作用。在导出之前如何将参数放入查询中? 问题答案: 如果您想保持原始参数查询的完

  • 我正试图将数据从Excel导入到SQL Server表中,但遇到了这个错误。你能建议如何避免这些吗?

  • 问题内容: 我已经找到了将HTML表导出到Excel的方法,但是在将JavaScript表导出从网站导出到excel时遇到了问题。请帮助我找到一种方法,将此表导出到Excel。 页面,从那里我需要信息: www.jalgpall.ee/players.php?year=2012&team=84&player=28469&b=ML 此页面javascript表函数的示例: 问题答案: 我自己找到了答

  • 问题内容: 您好,我正在寻找有关如何在ASP.NET MVC中导出为ex​​cel的最佳方法 现在我从billsternberger.net得到了这个 使用C#从ASP.NET MVC导出到Excel或CSV 从绑定到datagrid并导出到excel。 现在,我需要做的是获取我的html表并将其导出到excel,在这里我在处理表数据时使用了jquery datatable,因此它的重量更轻,因为