Как использовать корпус китайской Википедии

искусственный интеллект Python Windows Jieba
Как использовать корпус китайской Википедии

предисловие

Китайский корпус часто требуется при обработке естественного языка. Качественный китайский корпус трудно найти. Википедия и Baidu Baike являются относительно хорошими корпусами. Среди них Википедия будет регулярно упаковывать и выпускать корпусhttps://dumps.wikimedia.org/zhwiki/, вы можете скачать последнюю версию корпуса. С другой стороны, энциклопедия Baidu должна сканироваться сама по себе, но некоторые люди предоставили уже пройденный корпус.https://pan.baidu.com/share/init?surl=i3wvfilИзвлечь код neqs .

В этой статье в основном рассказывается о том, как использовать китайский корпус Википедии.

Wikipedia Dump

пройти черезhttps://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2Вы можете загрузить последний корпус китайской Википедии, текущий размер около 1,37 ГБ, а содержимое сохранено в формате xml, поэтому нам еще нужно разобраться с ним позже. Информация об узле xml аналогична следующей

<page>
  <title></title>
  <id></id>
  <timestamp></timestamp>
  <username></username>
  <comment></comment>
  <text xml:space="preserve"></text>
</page>

По названию тега легко узнать смысл содержимого каждого узла, текстовый узел — это содержимое статьи, на самом деле он содержит множество других символов, которые также необходимо отфильтровать.

Извлечь данные

Для загруженного выше корпуса требуется дальнейшее извлечение, вы можете выбрать

  • Напишите свою программу для извлечения.
  • Извлечено с помощью Wikipedia Extractor.
  • Извлеките с помощью библиотеки wikicorpus в gensim.

Так как в корпусе Википедии много символов, контент, отфильтрованный по разным сценариям, тоже разный, и вы можете обрабатывать его в соответствии со своими потребностями. Здесь мы напрямую используем Wikipedia Extractor для предварительной обработки.

git clone https://github.com/attardi/wikiextractor.git wikiextractor

cd wikiextractor

python setup.py install

python WikiExtractor.py -b 1024M -o extracted zhwiki-latest-pages-articles.xml.bz2

Процесс выполнения выглядит следующим образом, вы можете видеть, что всего было обработано 965446 статей.

INFO:root:5913353       服务水平管理
INFO:root:5913361       釋紹宗
INFO:root:5913367       2018年冬季奥林匹克运动会朝鲜代表团
INFO:root:5913369       扶搖
INFO:root:5913390       彭郁真
INFO:root:5913402       施耐德75毫米极轻便山炮
INFO:root:5913435       伊恩·麥奈爾
INFO:root:5913442       雷曼2:胜利大逃亡
INFO:root:5913443       兆丰洋行
INFO:root:5913445       有點想
INFO:root:5913446       田中淡
INFO:root:5913450       玩具指挥官
INFO:root:5913453       圣诞怪杰 (游戏)
INFO:root:5913457       Ontario Solar panel business proposal
INFO:root:5913458       特摄冒险话剧 超级英雄列传
INFO:root:5913465       玩具总动员2:拯救巴斯光年
INFO:root:5913467       佳能 EOS-1
INFO:root:5913480       南秉吉
INFO: Finished 11-process extraction of 965446 articles in 847.7s (1138.8 art/s)

После вышеуказанного извлечения получаются два файлаwiki_00иwiki_01. Формат похож на следующий

<doc id="5323477" url="https://zh.wikipedia.org/wiki?curid=5323477" title="結構與能動性">
文章内容
</doc>

Вторичная обработка

При обработке с помощью Wikipedia Extractor будет удален некоторый специально помеченный контент, но иногда это не влияет на наши сценарии использования, поэтому просто удалите извлеченные теги и некоторые пустые скобки, "", "", пустые названия книг и т. д. Может.

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 = sys.argv[1]
    filte(input_file)

От традиционного к упрощенному

Корпус Википедии содержит большое количество традиционного китайского языка, и нам может понадобиться преобразовать его в упрощенный китайский, здесь мы используем opencc для преобразования. Есть два способа использовать opencc,

  • Используйте версию opencc для Windows напрямую, а затем выполните команду для преобразования файла, вы можете перейти кhttps://bintray.com/package/files/byvoid/opencc/OpenCCскачать.
  • Используйте версию opencc для python, это может сообщить об ошибке в python3.5, выполните команду,pip install opencc-python, может сообщить об ошибке:ImportError: No module named distribute_setup, В настоящее времяhttp://download.csdn.net/download/tab_space/9455349Скачайте и разархивируйтеdistribute_setup.pythonСкопируйте файл в каталог Lib в каталоге установки Python. Выполните команду еще раз, и снова может появиться сообщение об ошибке:chown() missing 1 required positional argument: 'numeric_owner', то необходимоdistribute_setup.pythonв файлеself.chown(tarinfo, dirpath)изменить наself.chown(tarinfo, dirpath, '').

Здесь используется версия opencc для Windows, выполните следующую команду, чтобыwiki_00иwiki_01Преобразование традиционного китайского языка в упрощенный китайский.

opencc -i wiki_00 -o zh_wiki_00 -c t2s.json

opencc -i wiki_01 -o zh_wiki_01 -c t2s.json

Причастие

Если вы хотите продолжить операцию сегментации слов, вы можете использовать jieba, установить jieba напрямую с помощью python, а затем выполнить следующий скрипт:

import jieba
import re
filename='cut_std_zh_wiki_01'
fileneedCut='std_zh_wiki_01'
fn=open(fileneedCut,"r",encoding="utf-8")
f=open(filename,"w+",encoding="utf-8")
for line in fn.readlines():
    words=jieba.cut(line)
    for w in words:
       f.write(str(w))
f.close()
fn.close()

Ниже приведенырекламировать

========Время рекламы========

Моя новая книга «Анализ дизайна ядра Tomcat» продана на Jingdong, нуждающиеся друзья могут перейти кitem.JD.com/12185360.Контракт…Зарезервировать. Спасибо друзья.

Зачем писать «Анализ проектирования ядра Tomcat»

=========================

Добро пожаловать, чтобы следовать:

这里写图片描述
напишите сюда описание фото

这里写图片描述
напишите сюда описание фото