Skip to content

Mining synonyms from unstructured and semi-structured data

Notifications You must be signed in to change notification settings

tigerchen52/synonym_detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

同义词挖掘

同义词挖掘方法

(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

About

Mining synonyms from unstructured and semi-structured data

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages