Python,pandas和NLP:通过根据另一列中的值划分文本来创建语料库

问题描述 投票:0回答:1

我对“编码”,尤其是Python还是很陌生,所以请多多包涵!

我有一个CSV文件,该文件具有从网站上的反馈表收集的反馈(“此页面有用”的反馈表。CSV收到的每个反馈都有一行。有几列,但是我M在这种情况下感兴趣的是:-“怎么了”(由用户从列表中选择的内容填充-可能的值数量有限)-“详细信息”(输入文本-驱动反馈)-'主题'(由反馈的审阅者手动输入-希望最终通过分类将其自动化,但目前为止还没有-此处可能的值可能是无限的

我从此CSV中制作了一个熊猫数据框。

我想创建一个语料库来运行某些NLP算法(例如TF-IDF)。我想根据“出了什么问题”和/或“主题”列的值,将“详细信息”列中的所有文本拼接在一起。基本上,语料库将在“主题”列中为每个“值”提供一个文档,该文档包括来自具有该值的所有行的文本。

我最初的想法是这样的:-创建字典-遍历“主题”列中的值,并为该列表中找到的每个值创建一个键-遍历每一行-如果值X在“主题”列中,则将“详细信息”单元格中的字符串附加到字典中键X的值中]

我不太确定如何编写代码,或者是否有更好的方法来执行此操作...

数据如下所示:Dataframe with 3 columns: 'Ref number', 'Details', and 'Topic'

我想要的是自动创建“文档”,将“详细信息”列中在“主题”列中具有相同标签的所有字符串缝合在一起。主题列表将不断变化,因此我不会事先知道要创建的文档数量(以及不同主题的确切名称)。

这将创建字典:

dict = {}        
for topic in data_cropped['Topic'].unique():
       dict[topic] = []

然后,如果'Topic'的值等于键,那么我就想尝试从dict [topic]的'Details'中加入字符串。

我尝试过:

for text in data_cropped['Details']:
       if data_cropped['Topic'] in dict.keys():
                dict[key] = dict[key].append(text)

但是我得到一个错误:TypeError:'Series'对象是可变的,因此不能被散列]]

任何帮助将不胜感激!

我对“编码”,尤其是Python还是很陌生,所以请多多包涵!我有一个CSV文件,该文件具有从网站上的反馈表收集的反馈(“此页面是否有用”反馈...

python pandas nlp
1个回答
0
投票

不确定它是否最快,但是您可以执行以下操作:

topic_dict = {}
for topic, topic_df in data_cropped.groupby('Topic'):
    topic_dict[topic] = ' '.join(topic_df['Details'].tolist())
© www.soinside.com 2019 - 2024. All rights reserved.