在两个pandas数据帧之间映射相似的文本字符串

时间:2018-05-13 19:22:39

标签: python-2.7 pandas nlp mapping sentiment-analysis

我有一个名为data_feed的数据集包含反馈:

feedback                                                    
Fast Delivery. Always before time.Thanks                     
I have order brown shoe .And I got olive green shoe          
Delivery guy is a decent nd friendly guy                     
Its really good .. my daughter loves it                      
One t shirt was fully crushed rest everything is good        
Superfast delivery! I'm impressed.                           
.........................                                    .
........................                                     .
so on   

和另一个名为reference的数据集: -

refer_feedback               sub-category           category   sentiment
The delivery was on time.   delivery speed          delivery   positive
he was polite enough        delivery man behaviour  delivery   positive
worst products              product quality         general    negative

现在我想用以下列扩展数据集datafeed: -

feedback  sub-category   category   sentiment

我如何匹配类似的反馈,即我希望将数据框feedback中的列data_feed与数据框refer_feedback中的列reference匹配,并将相应的标签提供给子类别,类别和情绪。

对于数据集data_feed中的前第一反馈非常类似于数据集reference的第一反馈,然后data_feed的第一次观察将是:

feedback                                  subcategory     category     sentiment                                   
Fast Delivery. Always before time.Thanks  delivery speed  delivery   positive

1 个答案:

答案 0 :(得分:0)

您可以使用的一种策略是使用LDA分析反馈,以发现常见主题。然后,您可以使用主题在两个表之间进行映射。

LDA分析了所谓的语料库'的文件。文档在这里被抽象地使用。 refer_feedbackfeedback的每个示例都可以构成语料库。

可以使用两种不同的方法:

来自refer_feedback

的语料库

refer_feedback的每个示例都将是您的语料库中用于此方法的文档。您要查找的主题数量等于唯一子类别的数量。

使用nltk删除停用词并执行lemmatisation。使用gensim对结果执行LDA以获取主题模型。使用此主题模型对feedback进行分类。

来自feedback

的语料库

如果您没有足够的refer_feedback示例或尝试第一种方法但它不起作用,请尝试从大量feedback示例中构建语料库。在这种方法中,主题的数量并不容易确定,但从接近您拥有的子类别数量的东西开始是有价值的。

再次使用ntlk删除停用词并执行lemmatisation。构建LDA模型。

接下来,您需要手动将模型生成的主题映射到子类别。保存此映射。

当未来的反馈进来时,使用ldamodel发现其最可能的主题,然后使用您的主题到子类别的映射来分配适当的字段。