请教一个python问题——单词组合分析

  • q
    quantek
    我有几万个英文字符串,每个字符串中有大约不超过100个单词。
    我想知道 出现在一个字符串中频率前100的 两单词组合(这两个单词可能分散出现在字符串中)、三单词组合、四单词组合。

    请教:
    1. 有没有什么现成的lib可以实现这样的计算?
    2. 计算出任意两单词组合后,用什么lib可以画出 cluster 图(图上分散着多个单词,两个单词出现频率越高,连线越粗)
  • z
    znm
    啥叫两单词组合
  • y
    yjd159
    思路估计你也不需要了,编辑掉吧
  • q
    quantek
    例如:
    字符串1有: A B C D E 这个5个单词
    字符串2: A F D G H
    字符串3: A X Y Z D

    那么单词组合(A,D)出现了3次,频率最高
  • q
    quantek
    我当然会自己写,但总感觉应该有类似的库,这个需求很像 聚类或分类 分析。
  • y
    yjd159
    回复5#quantek


    原来是大牛啊,失敬,再见
  • z
    znm
    没听过有啥这种库,分词库很多,自己写个脚本导入数据库,筛选吧
  • q
    quantek
    A买了一些东西
    B买了一些东西
    C买了一些东西

    找出ABC买东西的共性,如果共性强,A买一个新东西时,可以推荐给B和C。

    我总感觉应该有类似现成算法。
  • f
    fangyu
    回复1#quantek

    英文比较麻烦,时态,单三,否定,倒装,插入等都会影响组合和判断。不像中文,光棍的一个字,走哪儿都不变。所以只能用模糊判断了。准确性就差好多。应该ai相关的库会有吧。
  • e
    eLan
    就是词共现呗,r有现成的
  • k
    ketkou
    感觉算法不难,就是有点烦锁
  • w
    wsyx87930
    jieba+snow,好像有词频统计的

    现在就是分词后再计算【组合】的词频呗
  • w
    woodoh
    下面链接的文章和你描述的情况查不多,可以参考,运行起来满容易的,我自己在jupyter笔记上也试着运行过,不过样本就几百个,没你的多
    https://towardsdatascience.com/m ... python-b276b4051a49

    这个库是spacy,看上去比nltk安装容易,文档也蛮好,就是我是白丁,到现在也没入门
    又想了想,你的问题可能没这么简单,所谓双单词组合,多单词组合,可能碰到的形式多的话还是直接看spacy的文档比较好,和上面文章的情况还是有差别的
  • q
    quantek
    谢谢提醒。字符串中名词为主,总量也还好,如果复数情况不多,先手动替换一下
  • a
    apolodi
    简单的单词匹配有NLP的相关类库,很多功能比你现在想象的还要多,可以试着拓展一下新思维。常见的NLTK就能处理。

    如果是以做量化为目的,

    画图的部分,Keras给的例程就是画聚类图,
  • q
    quantek
    非常感谢,我去学习一下
  • q
    quantek
    非常感谢,一个关键词,就可以给我打开一扇窗