我正在尝试为一系列评论文本实现一个版本的Brown clusters(SemEval 2014)。我使用的是Owoputi等人(2013)公开发布的twitter集群。它们看起来如下所示:
0000 ijust 1446
0000 i 17071657
0000 -i 4254
000100 iyou 41
000100 #innowayshapeorform 41
其中,位字符串表示集群,共有1000个集群
我已提取到字典中,其中相关的位字符串作为键,标记列表作为值:例如
{'0000': ['ijust', 'i', '-i'], '000100': ['iyou', #innowayshapeorform] ...}
我只是缺少了如何将字典键映射到向量(1d数组)中的索引的文本进行热编码的部分:
这样,如果一个单词出现在文本中,并且该单词出现在集群中,那么集群的值将从0更改为1
例如。 一个热向量=[0]*3
课文1:我讨厌猫
文本1矢量表示:[1,0,1]
课文2:狗爱我
文本2矢量表示:[1,1,1]
课文3:我梦见羊
文本3矢量表示:[1,0,0]
这个例子有3个簇-我的簇长度为1000维
你的问题很难理解,所以让我把它正式化一点。到目前为止,我所理解的是:
text
字符串映射到一维数组a
李>d
,它将一些cluster
映射到word
列表李>a
中的每个位置ix
对应于字典d
中的一些key
李>a[ix] == 1
如果text
包含d[key]
中的任何一个,则== 0
否则李>以下解决方案似乎足够优雅:
测试示例:
如果我弄错了,请改进你的问题,特别是一个热点部分
不确定
DictVectorizer
会有什么帮助,因为它可以转换字典,而您需要转换一段文本。(基本上,DictVectorizer
从json转储中恢复数据帧相关问题 更多 >
编程相关推荐