【发布时间】:2016-05-20 04:48:37
【问题描述】:
我熟悉 k-means 来聚类数据点,但不熟悉文本。所以我有一列 cvs 格式的单词(有些行只有一个单词,有些行有更多,等等),我想将具有相似或更多单词的那些聚类,然后将这些聚类映射到数字作为索引,这些索引号需要作为第二列添加。我知道 python 中有 scipy packahes 和 word2vec,但这是我第一次处理聚类文本。关于如何做到这一点的任何想法?任何代码示例将不胜感激
编辑:我想要的不是意思上相似的词,我想要的是与确切文本相似的词,例如:我们在不同的三行中有三个词:心脏病发作,心力衰竭,心碎……例如。 . 我希望这些行在一个集群中,因为它们有一个共同的词“心脏......顺便说一下,所有的行都以某种方式相互连接,所以我真正想要的是对确切的词进行聚类
from csv import DictReader
import sets
### converting my cvs file into list!!
with open("export.csv") as f:
my_list = [row["BASE_NAME"] for row in DictReader(f)]
#print(my_list)
## having every word in the cvs file
Set = list()
for item in my_list:
MySet = list(set(item.split(' ')))
Set.append(MySet)
#print(Set)
cleanlist = []
[cleanlist.append(x) for x in Set if x not in cleanlist]
print(cleanlist[1])
#print(cleanlist)
###my_list = ['abc-123', 'def-456', 'ghi-789', 'abc-456']
#for item in my_list:
for i in xrange(len(cleanlist)):
# matching = [s for s in my_list if cleanlist[i] in s]
# matching = [x for x in my_list if cleanlist[i] in x]
matching = any( cleanlist[[i]] in item for item in my_list)
print(matching)
my_list 的示例是['Carbon Monoxide (Blood)', 'Carbon Monoxide Poisoning', 'Carbonic anhydrase inhibitor administered']
cleanlist 示例为[['Antibody', 'Cardiolipin'], ['Cardiomegaly'], ['Cardiomyopathy'], ['Cardiopulmonary', 'Resuscitation', '(CPR)'], ['Diet', 'Cardiovascular'], ['Disease', 'Cardiovascular']]
已解决[现在我遇到了问题,我的 cleanlist 不是每个索引只包含一个项目,这使得匹配比较困难,如何解决这个问题??]
????另外,我想为每次比较创建一个列表,所以对于干净列表的每次比较,我想创建一个列表,它们之间有相似的单词,,,任何帮助请问??
【问题讨论】:
标签: python mapping cluster-analysis similarity