如何将函数(BigramCollocationFinder)应用到Pandas DataFrame

我不太习惯编程,需要一些帮助来解决一个问题。我有一个包含4列和大约5000行的.csv文件,里面填满了问题和答案。我想在每个单元格中查找词语搭配。

起点:包含4列和大约5000行的Pandas数据框。(Id, Title, Body, Body2)

目标:包含7列的数据框(Id, Title, Title-Collocations, Body, Body_Collocations, Body2, Body2-Collocations),并对每一行应用一个函数。

我在NLTK文档中找到了一个关于Bigramm搭配的例子。

bigram_measures = nltk.collocations.BigramAssocMeasures()finder.apply_freq_filter(3)finder = BigramCollocationFinder.from_words(nltk.corpus.genesis.words('english-web.txt'))print (finder.nbest(bigram_measures.pmi, 5))>>>[('Beer', 'Lahai'), ('Lahai', 'Roi'), ('gray', 'hairs'), ('Most', 'High'), ('ewe', 'lambs')]

我想将这个函数适应我的Pandas数据框。我知道Pandas数据框的apply函数,但无法使其正常工作。

这是我对其中一列的测试方法:

df['Body-Collocation'] = df.apply(lambda df: BigramCollocationFinder.from_words(df['Body']),axis=1)

但如果我打印出示例行的结果,我得到的是

print (df['Body-Collocation'][1])>>> <nltk.collocations.BigramCollocationFinder object at 0x113c47ef0>

我甚至不确定这是否是正确的方法。有人能指导我正确的方向吗?


回答:

如果你想对Body列中的每个value应用BigramCollocationFinder.from_words(),你需要这样做:

df['Body-Collocation'] = df.Body.apply(lambda x: BigramCollocationFinder.from_words(x))

本质上,apply允许你遍历rows,并将Body列的相应value提供给应用的函数。

但正如评论中建议的,提供数据样本将更容易解决你的具体情况。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注