当前位置 博文首页 > berry_K的博客:[+] 词汇相似度计算

    berry_K的博客:[+] 词汇相似度计算

    作者:[db:作者] 时间:2021-09-16 19:25

    1.??????任务和环境介绍

    任务:实现5种词汇相似度计算方法。

    数据:wordsim353

    评价方法:Spearman’s rank correlation coefficient

    环境:Ubuntu?服务器(4 Intel(R) Xeon(R) CPU E5-2609 v3?@1.90GHz),Anacanda2.464-bit),python2.7

    基本方法:(1)基于语义词典(Wordnet)的词汇相似度(2word2vec训练得到词汇向量计算相似度(3lda训练得到词汇向量计算相似度(4)利用GoogleNews语料得到词汇相似度模型(5)利用Google搜索结果计算相似度。

    2.??????????词汇相似度计算方法

    2.1?基于语义词典(Wordnet)的词汇相似度计算

    方法:?调用python的工具包nltk?其中包含了wordnet词典。基于词汇的层次结构计算相似度。其中词汇相似度采用词汇所有语义相似度的最大值。

    2.1.1?基于路径的方法

    ????基于上位词层次结构中相互连接的概念之间的最短路径的打分。同义词集与自身比较将返回最大值。

    path_similarity(sense1,sense2) #?词在词典层次结构中的最短路径

    wup_similarity(sense1,?sense2) # Wu-Palmer?提出的最短路径

    lch_similarity(sense1,sense2) # Leacock Chodorow?最短路径加上类别信息

    2.1.2?基于互信息的方法

    res_similarity(sense1,?sense2,?brown_ic) # -log?P(LCS(c1,c2))

    jcn_similarity(sense1,?sense2,?brown_ic) # 1/(IC(s1)?+?IC(s2)?-?2?*?IC(lcs))

    lin_similarity(sense1,?sense2,?semcor_ic) # 2?*?IC(lcs)?/?(IC(s1)?+?IC(s2))

    执行:>>python?wordSimByWordNet.py?

    2.2.?基于语料(Wikipedia)统计的词汇相似度计算

    主要思想:利用英文维基百科语料库训练得到word-embedding(词向量),然后计算词汇相似度,分别采用了Word2vecLDA训练得到词汇向量。

    具体方法如下:

    1)获取英文wikipedia数据(压缩后的12G):

    >>?wget http://download.wikimedia.org/enwiki/latest/enwiki-latest-pages-articles.xml.bz

    2)解压缩wikipedia数据(解压缩后53G),并利用WikiExtractorPython?写的一个维基百科抽取器)抽取文本内容。

    >>bunzip2?enwiki-latest-pages-articles.xml.bz

    >>python WikiExtractor.py –cb 1000M -o extracted enwiki-latest-pages-articles.xml

     参数?-b1000M?表示以?1000M?为单位切分文件,默认是?1M

    3)提取文本内容

    >>?WikiExtractor.py -cb 250K -o extracted enwiki-latest-pages-articles.xml.bz

    4)解压后将文本内容合并到一个文件中(合并后17G

    >>bash mergeWikiCorpus.sh

    考虑到语料库太大,实验资源有限,随机抽取了2.4G文本内容(mergeData.txt)作为最终的语料库。

    2.2.1?基于?Word2vec?得到词汇向量计算词汇相似度

    由于语料库中存在部分中文,空行,xml标记等无意义信息,需要对数据进行预处理:去除中文,空行和xml标记等。

    >>python?word2vectorPreprocess.py

    处理完后得到1.6G6779664条信息,作为word2vec的输入文件:word2vecInput.txt

    资源:Google word2vec?https://code.google.com/p/word2vec/

    >>?word2vecStart.sh

    time?./word2vec?-train?/home/xilian/wordSim/wikiDump/word2vecInput.txt?-output?/home/xilian/wordSim/wikivectors.txt?-cbow?1?-size?200?-window?8?-negative?25?-hs?0?-sample?1e-4?-threads?20?-binary?0?-iter?100

    ?

    ?-train word2vecInput.txt??表示的是输入文件,

    -output wikivectors.txt?表示输出文件,

    -cbow 0表示不使用cbow模型,默认为Skip-Gram模型

    -size 200?每个单词的向量维度是200

    -window 8?训练的窗口大小为8就是考虑一个词前8个和后8个词语,

    -negative 25 -hs 0使用NEG方法,不使用HS方法,

    -sampe

    下一篇:没有了