Windows3.5下对维基百科语料用word2vec进行训练寻找同义词相似度

Posted A-inspire

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows3.5下对维基百科语料用word2vec进行训练寻找同义词相似度相关的知识,希望对你有一定的参考价值。

首先把需要下载的东西都列出来

1. 语料:下载地址是https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2,或者在这里找https://dumps.wikimedia.org/zhwiki/。这个文件只包含了标题和正文,不包含词条之间的链接信息,大小约为1.3G。

2.WikiExtractor:用于从原始的xml文件中提取出标题和正文。地址https://github.com/attardi/wikiextractor/blob/master/WikiExtractor.py。因为这个文件不依赖其他文件和库,就直接在本地新建一个脚本,再把WikiExtractor.py中的源码复制过来就行了。

3.繁体简体转换工具:由于词条原文本中可能混杂了繁体和简体,需要统一转换为简体。Linux下可以直接wget后在终端中使用,windows版本只能手动下载了,地址https://code.google.com/archive/p/opencc/downloads。下完直接解压就可以了。

此时有三个文件,分别是zhwiki-latest-pages-articles.xml.bz2,WikiExtractor.py,和文件夹opencc-0.4.2(链接:https://bintray.com/package/files/byvoid/opencc/OpenCC)。

 

1、首先我们要获得维基百科的中文语料库,这个文件非常大,需要慢慢下载;

下载地址为https://dumps.wikimedia.org/zhwiki//

2、通过https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2

我们就得到了1.45GB的中文语料zhwiki-latest-pages-articles.xml.bz2

3、里面内容以xml格式保存,所以我们后续还是需要做处理的(转换为text文档)

这里抽取有两种方法:

(1)process_wiki.py 源码进行抽取(但是我试了好几次都没有成功,导入之后解析的text文件没有反应,倒是输出了一堆文档,不知道怎么回事)

训练方法:在文件目录下python process_wiki.py zhwiki-latest-pages-articles.xml.bz2 wiki.zh.text

(2)WikiExtractor.py源码训练:https://github.com/attardi/wikiextractor/edit/master/WikiExtractor.py

  命令行进入当前文件夹输入python WikiExtractor.py -b 500M -o extracted zhwiki-latest-pages-articles.xml.bz2

训练结果如图(大概需要一个多小时吧,后面非常慢):

 一个小时后,跑完了,看:

500M代表提取出来的单个文件最大为500M。这是会产生目录extracted/AA,其中有三个文件分别是wiki_00,wiki_01,wiki_02

之后对文档进行转换:

2.命令行进入AA文件夹,假设opencc.exe的绝对路径是

E:\\下载\\语料\\opencc-0.4.2\\opencc.exe,输入

加上绝对路径之后得到三个文件:

我们看看这个文件的内容,明显有一些无用的符号,需要把它们去掉:

 去掉这些没用的符号就是下图这样的,去掉了哈哈哈:

代码:

import re
import sys
import codecs
def filte(input_file):
    p1 = re.compile(\'()\')
    p2 = re.compile(\'《》\')
    p3 = re.compile(\'\')
    p4 = re.compile(\'\')
    p5 = re.compile(\'<doc (.*)>\')
    p6 = re.compile(\'</doc>\')
    outfile = codecs.open(\'std_\' + input_file, \'w\', \'utf-8\')
    with codecs.open(input_file, \'r\', \'utf-8\') as myfile:
        for line in myfile:
            line = p1.sub(\'\', line)
            line = p2.sub(\'\', line)
            line = p3.sub(\'\', line)
            line = p4.sub(\'\', line)
            line = p5.sub(\'\', line)
            line = p6.sub(\'\', line)
            outfile.write(line)
    outfile.close()
if __name__ == \'__main__\':
    input_file = \'zh_wiki_02\'
    filte(input_file)
    print("ok!")

 

以上是关于Windows3.5下对维基百科语料用word2vec进行训练寻找同义词相似度的主要内容,如果未能解决你的问题,请参考以下文章

02-NLP-gensim中文处理案例

中文NLP福利!大规模中文自然语言处理语料

MediaWiki怎么标记需要翻译的内容?

BERT的几个可能的应用

spark实战之:分析维基百科网站统计数据(java版)

如何使用库来获取维基百科页面?