2

我想从一个数据集的文本字段计算的关联规则,如使用Python下面之一:关联规则

ID fav_breakfast 
1 I like to eat eggs and bacon for breakfast. 
2 Bacon, bacon, bacon! 
3 I love pancakes, but only if they have extra syrup! 
4 Waffles and bacon. Eggs too! 
5 Eggs, potatoes, and pancakes. No meat for me! 

请注意,Orange 2.7不是因为我使用Python的当前版本(3.6),所以Orange 3是公平的游戏;然而,我似乎无法弄清楚这个模块如何处理这种格式的数据。

的第一步,在我心中,将上述转换成稀疏矩阵,如(截)所示之一:

enter image description here

接下来,我们将要删除停止单词(例如I,to,and for等),大写/小写问题,数字,标点符号,诸如马铃薯,土豆,马铃薯等词语(以词形表示)。

一旦这个稀疏矩阵就位,下一步就是计算稀疏矩阵中所有单词/字符串之间的关联规则。我在R中使用arules包完成了这项工作;然而,我还没有能够为Python识别“arules等效”

我设想的最终解决方案将包括一个左侧和右侧参数列表,以及支持,信心和规则的升降,以降序排列,最高升力规则位于最高和最低升程规则在底部(再次,易于获得R与arules)。

此外,我希望能够指定“培根”的右侧,同时显示规则的支持,信心和提升,并按照最高升降规则以“培根” “在顶部和最低的提升规则与底部的”培根“有关。

使用Orange3-Associate可能是这里的路线;然而,我在网上找不到任何好的例子。感谢您的帮助!

回答

0

这是你想到的吗? Orange应该能够传递一个插件的输出,并将它们用作另一个插件的输入。

enter image description here

[编辑] 我能够重构代码的情况下,但它远不如性感:

import numpy as np 
from orangecontrib.text 
import Corpus, preprocess, vectorization 
from orangecontrib.associate.fpgrowth import * 

data = Corpus.from_file("deerwester") 
p = preprocess.Preprocessor() 
preproc_corpus = p(data) 
v = vectorization.bagofwords.BoWPreprocessTransform(p, "Count", preproc_corpus) 
N = 30 
X = np.random.random((N, 50)) > .9 
itemsets = dict(frequent_itemsets(X, .1)) 
rules = association_rules(itemsets, .6) 
list(rules_stats(rules, itemsets, N)) 
+0

感谢@vijolica,我不是太熟悉的橙色GUI;然而,这种类型的输出可以做到这一点。我用这个模糊区域是1)你的数据(语料库)是什么格式? 2)你在做什么/ Orange在预处理阶段? 3)您是否能够查看用于运行此过程中4个步骤中的任何一个的Python程序?换句话说,我们可以采用Orange GUI中使用的Python程序并复制/粘贴到其他Python IDE中吗?再次感谢你的帮助! –

+1

广告1)橙色的通常格式是制表符分隔的,但您可以使用Excel或.csv。 广告2)这里的预处理是一个简单的默认设置:小写字母,单词标记,省略标点符号,过滤掉停用词。 重要!这里需要的稀疏数组是在输出字数的单词袋中生成的。 广告3)遗憾的是尚未。Orange包装nltk和其他Python函数,所以你理论上可以看看Orange的源代码并尝试提取有效的函数。不是一个简单的任务。 :O – vijolica

+0

再次感谢您继续推进!我有几个问题,但我现在只问一个 - 当试图安装'orangecontrib.text'时,我得到以下错误:“PackageNotFoundError:包在当前的win-64通道中缺少:-orangecontrib.text。我试过了使用pip,pip3和conda,但在Anaconda命令提示符下没有任何运气。想再次感谢帮助我浏览这些障碍。 –