Train Wikidata with word2vec for word embedding tasks
Switch branches/tags
Nothing to show
Clone or download
Latest commit a6aaedf Jul 3, 2018
Permalink
Failed to load latest commit information.
data Init Jan 28, 2018
pre-trained/zhwiki-latest-pages-articles.0620 Init Jan 28, 2018
tensorflow_word2vec Init Jan 28, 2018
.gitignore Init Jan 28, 2018
README.md Update README.md Jul 3, 2018
compute-pre-train-distance.sh Init Jan 28, 2018
fix_special_symbols.py Init Jan 28, 2018
requirement.txt Init Jan 28, 2018
t2s.json Init Jan 28, 2018
tfidf_plain.py Init Jan 28, 2018
tfidf_sklearn.py Init Jan 28, 2018
word2vec_c_format_build_dict.sh Init Jan 28, 2018
word2vec_c_format_train.sh Init Jan 28, 2018
word2vec_gensim_similarity.py Init Jan 28, 2018
wordseg.py Init Jan 28, 2018

README.md

chatoper banner

wikidata

wikidata.org

Download

STORE_PATH=data
DATA_URL=http://download.wikipedia.com/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2

cd $STORE_PATH
wget $DATA_URL

Extract articles

WikiExtractor.py -b 5000M \
    -o data/zhwiki-latest-pages-articles.extracted \
    data/zhwiki-latest-pages-articles.xml.bz2

繁体转简体

opencc -i data/zhwiki-latest-pages-articles.extracted/AA/wiki_00  \
    -o data/zhwiki-latest-pages-articles.0620.chs \
    -c t2s.json

Download t2s.json.

到此为止,已经完成了大部分繁简转换工作。

其他情况处理

  1. 维基百科使用的繁简转换方法是以词表为准,外加人工修正。人工修正之后的文字是这种格式,多数是为了解决各地术语名称不同的问题:

他的主要成就包括Emacs及後來的GNU Emacs,GNU C 編譯器及-{zh-hant:GNU 除錯器;zh-hans:GDB 调试器}-。

对付这种可以简单的使用正则表达式来解决。一般简体中文的限定词是zh-hans或zh-cn。

  1. 由于Wikipedia Extractor抽取正文时,会将有特殊标记的外文直接剔除,最后形成类似这样的正文:

西方语言中“数学”(;)一词源自于古希腊语的()

虽然上面这句话是读不通的,但鉴于这种句子对我要处理的问题影响不大,就暂且忽略了。最后再将「」『』这些符号替换成引号,顺便删除空括号。

python2 fix_special_symbols.py data/zhwiki-latest-pages-articles.0620.chs

程序执行结束,输出: data/zhwiki-latest-pages-articles.0620.chs.normalized

浏览文件

head data/zhwiki-latest-pages-articles.0620.chs.normalized

分词

  • 执行脚本
export PYTHONIOENCODING="UTF-8"
python3 wordseg.py > data/zhwiki-latest-pages-articles.0620.chs.normalized.wordseg

word2vec

word2vec官方的实现。

./word2vec_c_format_train.sh

Usage of word2vec model

  • word2vec cli
distance, compute-accuracy, word-analogy
  • python
python3 word2vec_gensim_similarity.py

TF-IDF

  • plain code

train

python3 tfidf_plain.py

After running, dump words, weights and idf into pickle file.

现在会有稀疏矩阵的问题,解决方案是使用限定的词汇表。

python3 tfidf_sklearn.py

关联项目

Synonyms

中文近义词库,Synonyms使用wikidata-corpus训练的词向量生成近义词表。

references

http://licstar.net/archives/328 http://licstar.net/archives/tag/wikipedia-extractor