Coder Social home page Coder Social logo

synonym_detection's Introduction

同义词挖掘

同义词挖掘方法

(1)百度百科同义词
(2)word2vector
(3)语义共现网络的节点相似度
(4)Levenshtein距离
(5)DPE模型(undo)【参考文献】

主要功能

1. 百度百科同义词



  • 如上图所示,是在百度百科中搜索“凤梨”返回的页面结果,左边这个图为凤梨的description,右边这个图为凤梨的info box。
  • description中有这么一句话“原产美洲热带地区。俗称菠萝,为著名热带水果之一。”,那么我们可以把凤梨“俗称”菠萝提取出来就到了同义词
  • info box中有“别称”、“英文名称”、“又称”等属性,我们同样可以当做同义词提取出来,这样就完成了同义词的挖掘

代码示例

def baike_invoke():
    import baike_crawler_model
    print(baike_crawler_model.baike_search(('凤梨', '001')))

if __name__ == '__main__':
    baike_invoke()

输出:

['菠萝皮', '地菠萝', '菠萝', '草菠萝']

2. word2vector


  • 使用gensim包对输入的语料训练词向量,然后计算词向量之间余弦相似度,返回top-k个词作为同义词

代码示例

python synonym_detect -corpus_path  ../input/三体.txt -input_word_path ../temp/input_word.txt -process_number 2 if_use_w2v_model True

参数

  • -corpus_path 为语料文件,使用三体小说作为训练语料
  • -input_word_path 输入词表,对词表中的词进行同义词挖掘。文件中每行以“|”作为分隔符,第一列是id,第二列是输入词
  • -process_number 2 进程数量
  • -if_use_w2v_model True 使用word2vector模型

输人 input_word:

1|海王星
2|女孩
3|椅子
4|海军
5|阵列
6|变化
7|程心
8|火焰
9|天空
10|建造

输出 :

1	海王星	海王星|土星|天王星|背面|金星
3	椅子	椅子|办公桌|地板|地毯|铁锹
2	女孩	女孩|中年人|女孩儿|女子|泪光
9	天空	天空|晨光|夜空|暮色|漆黑
4	海军	海军|军种|服役|事务性|政工
6	变化	变化|隐隐约约|异常|微妙|所致
5	阵列	阵列|矩形|一千公里|环|标示出
7	程心	程心|AA|艾|当程心|曹彬
8	火焰	火焰|暗红|山脉|灼热|变幻
10	建造	建造|天梯|最小|准|航空母舰

3. 语义共现网络的节点相似度

语义共现网络本质是根据上下文构建的图,图中的节点是词,边是这个词的上下文相关词。对于语义共现网络的两个节点,如果这两个节点的共同邻居节点越多,说明这两个词的上下文越相似,是同义词的概率越大。例如,对于《三体》小说中的两个词“海王星”和“天王星”,在《三体》语义共现网络中,“海王星”和“天王星”的邻居节点相似度很高,则说明两个词是同义词的可能性很高。如下图所示:

代码示例
python synonym_detect -corpus_path  ../input/三体.txt -input_word_path ../temp/input_word.txt -process_number 2 -if_use_sn_model True

输出 :

5	阵列	阵列|矩形|队列|星体|量子
9	天空	天空|中|夜空|太阳|消失
4	海军	海军|航空兵|服役|空军|失败主义
10	建造	建造|制造|加速器|飞船|太阳系
3	椅子	椅子|桌子|坐下|沙发|台球桌
1	海王星	海王星|天王星|土星|卫星|群落
7	程心	程心|AA|中|罗辑|说
8	火焰	火焰|光芒|光点|推进器|雪峰
2	女孩	女孩|接待|冲何|请云|女士
6	变化	变化|发生|意味着|恢复|中

4. Levenshtein距离

计算编辑距离发现同义词

代码示例

python synonym_detect -corpus_path  ../input/三体.txt -input_word_path ../temp/input_word.txt -process_number 2 -if_use_leven_model True

输出 :

1	海王星	海王星|冥王星|天王星|星|王
7	程心	程心|请程心|带程心|连程心|从程心
6	变化	变化|变化很大|动态变化|发生变化|化
3	椅子	椅子|子|筐子|村子|棒子
2	女孩	女孩|女孩儿|女孩子|小女孩|女
10	建造	建造|建造成|造|建|建到
5	阵列	阵列|列|阵|历列|列为
9	天空	天空|海阔天空|空|天|天马行空
8	火焰	火焰|火|焰|火星|野火
4	海军	海军|于海军|陆海空军|海|海军军官

5. DPE模型

undo

同义词挖掘算法最新论文

DPE

论文 https://dl.acm.org/doi/pdf/10.1145/3097983.3098185
会议 KDD 17
代码 https://github.com/mnqu/DPE

SynSetMine

论文 http://hanj.cs.illinois.edu/pdf/aaai19_jshen.pdf
会议 AAAI 19
代码 https://github.com/mickeystroller/SynSetMine-pytorch

SynSetExpan

论文 https://arxiv.org/pdf/2009.13827.pdf
会议 EMNLP 20
代码 无

SYNONYMNET

论文 https://arxiv.org/pdf/1901.00056.pdf
会议 IJCAI 20
代码 https://github.com/czhang99/SynonymNet

synonym_detection's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

synonym_detection's Issues

使用w2v执行新同义词挖掘任务,大量报错

你好,
使用w2v 挖掘同义词执行新任务时,出现大量报错;
1.手法:
a. 使用新的文档
b. 使用新的搜索词
2. 出现的报错:
I. word2v 类里出现两个未曾设置的参数并在实例中报错,vector_size 应该时写成了size,已改; iter 这个参数不知道作用,已经删除;
II. word2vec_model.py, line 106, in cal_sim cos = np.matmul(input_word_embed, normal_word_embed_T),Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 300 is different from 0); 这里不知道为什么维度不对;

use_sn_model 运行结果不一致

你好,我尝试了 python synonym_detect -corpus_path ../input/三体.txt -input_word_path ../temp/input_word.txt -process_number 2 -if_use_sn_model True
运行结果输出如下:

1	海王星	海王星|天王星|土星|卫星|群落
2	女孩	女孩
3	椅子	椅子
4	海军	海军|航空兵
5	阵列	阵列|矩形
6	变化	变化
7	程心	程心|AA|中|罗辑|说
8	火焰	火焰
9	天空	天空
10	建造	建造

与 readme 中示例不一致,好几个词都没找出同义词,请问这大概会是什么原因呢,我还需要设置其他都参数吗?感谢

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.