使用两个或多个列表进行聚类

时间:2017-03-25 17:44:52

标签: python python-2.7

我想根据它们是否与另一个列表中的条目匹配来聚类单词或句子。

像这样:

searchterms = ["windows pc", "linux laptop", "some gibberish"]
osCluster = ["windows", "linux"]

我现在要做的是通过搜索字符串并使用osCluster列表对它们进行分类。最后我想要像这样的csv格式:

  • windows pc,windows
  • linux笔记本电脑,linux
  • 一些胡言乱语,N / A

现在我有这样的事情:

for searchterm in searchterms:
for os in osCluster:
    if os in searchterm:
        print searchterm, os

导致:

windows pc windows
linux laptop linux
[Finished in 0.0s]

然而,我想标记一些乱码" as" N / A"。如果我只是添加:

else:
        print searchterm

这将导致:

windows windows
windows
linux
linux linux
gibberish
gibberish
[Finished in 0.0s]

我知道这就是我编写的程序。但我认为这是错误的思维方式。如果你能指出我正确的方向,这将是非常有用的。

1 个答案:

答案 0 :(得分:3)

你非常接近。以下是一些修复方法:

>>> searchterms = ["windows pc", "linux laptop", "some gibberish"]
>>> osCluster = ["windows", "linux"]

>>> for term in searchterms:
        found_cluster = 'N/A'
        for cluster in osCluster:
            if cluster in term:
                found_cluster = cluster
                break
        print('%-15s | %s' % (term, found_cluster))


windows pc      | windows
linux laptop    | linux
some gibberish  | N/A