一般的想法是写一个脚本,将种子列表中的单词与话语中的单词进行比较。所以我试着
xml语料库的结构如下:
<section name="thisisaxml-file">
<topic>
<utterance name="John Doe" id="264">
foo bar?
</utterance>
<utterance name="Henry Parker" id="265">
foo foo bar. New York, wind.
</utterance>
</topic>
</section>
由于我出色的自学python技能,这就是我到目前为止想到的:
import pandas as pd
import xml.etree.ElementTree as ET
import nltk
from nltk.tokenize import word_tokenize
#xml file data input
xml_data = 'sample.xml'
#create an ElementTree object
etree = ET.parse(xml_data)
doc_df = pd.DataFrame(list(iter_docs(etree.getroot())))
hedge = ['foo', 'wind', 'base']
df = pd.DataFrame({'utterance': doc_df['utterance']})
df['id'] = pd.DataFrame({'id': doc_df['id']})
df['name'] = pd.DataFrame({'name': doc_df['name']})
df['tokenized_sents'] = df.apply(lambda row: word_tokenize(row['utterance']), axis=1)
df['sents_length'] = df.apply(lambda row: len(row['tokenized_sents']), axis=1)
final = df[df.tokenized_sents.apply(lambda x: hedge in x)]
final.to_csv('out.csv', sep='\t', encoding='utf-8') #prints to file
我偶然发现了几个问题:
df['tokenized_sents'].lower()
不起作用,因为(我认为)列表格式在pd.DataFrame(list(iter_docs(etree.getroot())))
df[df.tokenized_sents.apply(lambda x: hedge in x)]
可以工作,但不会返回任何信息,但是如果您使用的是字符串,它就可以工作李>所以一般来说,我想对照pandas中的特定列检查单词列表。虽然我在这个网站上看到过类似的话题,但到目前为止,所提到的解决方案都不适合我
你对我有什么想法吗
变量df已经是一个包含字典的数据帧。在dataframes中创建dataframes会损坏您的数据,或者至少我看到它会损坏我的一些数据。如果不是这样的话,我想知道怎么做。 无论如何,不知道这是否能解决您的问题,但它肯定会清理您的代码
相关问题 更多 >
编程相关推荐