29 11 2019

Synonyms

Chinese Synonyms for Natural Language Processing and Understanding.

最好的中文近义词工具包。

synonyms可以用于自然语言理解的很多任务:文本对齐,推荐算法,相似度计算,语义偏移,关键字提取,概念提取,自动摘要,搜索引擎等。

    Welcome

    pip install -U synonyms

    兼容py2和py3,当前稳定版本 v3.x。

    Node.js 用户可以使用 node-synonyms了。

    npm install node-synonyms

    本文档的配置和接口说明面向python工具包, node版本查看项目。

    Usage

    支持使用环境变量配置分词词表和word2vec词向量文件。

    环境变量描述
    SYNONYMS_WORD2VEC_BIN_MODEL_ZH_CN使用word2vec训练的词向量文件,二进制格式。
    SYNONYMS_WORDSEG_DICT中文分词主字典,格式和使用参考

    synonyms#seg

    中文分词

    import synonyms
    synonyms.seg("中文近义词工具包")

    分词结果,由两个list组成的元组,分别是单词和对应的词性。

    (['中文', '近义词', '工具包'], ['nz', 'n', 'n'])

    该分词不去停用词和标点。

    synonyms#nearby

    import synonyms
    print("人脸: %s" % (synonyms.nearby("人脸")))
    print("识别: %s" % (synonyms.nearby("识别")))
    print("NOT_EXIST: %s" % (synonyms.nearby("NOT_EXIST")))

    synonyms.nearby(WORD)返回一个元组,元组中包含两项:([nearby_words], [nearby_words_score])nearby_words是WORD的近义词们,也以list的方式存储,并且按照距离的长度由近及远排列,nearby_words_scorenearby_words对应位置的词的距离的分数,分数在(0-1)区间内,越接近于1,代表越相近。比如:

    synonyms.nearby(人脸) = (
        ["图片", "图像", "通过观察", "数字图像", "几何图形", "脸部", "图象", "放大镜", "面孔", "Mii"], 
        [0.597284, 0.580373, 0.568486, 0.535674, 0.531835, 0.530
    095, 0.525344, 0.524009, 0.523101, 0.516046])

    在OOV的情况下,返回 ([], []),目前的字典大小: 125,792。

    synonyms#compare

    两个句子的相似度比较

        sen1 = "发生历史性变革"
        sen2 = "发生历史性变革"
        r = synonyms.compare(sen1, sen2, seg=True)

    其中,参数 seg 表示 synonyms.compare是否对sen1 和 sen2进行分词,默认为 True。返回值:[0-1],并且越接近于1代表两个句子越相似。

    旗帜引领方向 vs 道路决定命运: 0.429
    旗帜引领方向 vs 旗帜指引道路: 0.93
    发生历史性变革 vs 发生历史性变革: 1.0

    synonyms#display

    以友好的方式打印近义词,方便调试,display调用了 synonyms#nearby 方法。

    >>> synonyms.display("飞机")
    '飞机'近义词:
      1. 架飞机:0.837399
      2. 客机:0.764609
      3. 直升机:0.762116
      4. 民航机:0.750519
      5. 航机:0.750116
      6. 起飞:0.735736
      7. 战机:0.734975
      8. 飞行中:0.732649
      9. 航空器:0.723945
      10. 运输机:0.720578

    synonyms#v

    获得一个词语的向量,该向量为numpy的array,当该词语是未登录词时,抛出 KeyError异常。

    >>> synonyms.v("飞机")
    array([-2.412167  ,  2.2628384 , -7.0214124 ,  3.9381874 ,  0.8219283 ,
           -3.2809453 ,  3.8747153 , -5.217062  , -2.2786229 , -1.2572327 ],
          dtype=float32)

    synonyms#sv(sentence, ignore=False)

    获得一个分词后句子的向量,向量以BoW方式组成

        sentence: 句子是分词后通过空格联合起来
        ignore: 是否忽略OOV,False时,随机生成一个向量


    1. 上一篇:搬瓦工DC6 CN2GIA线路补货,$46.87/年
    2. 下一篇:c4o:香港CN2 GIA 99元/年
    发表评论