本文是对xing_NLP中的用N-gram语言模型做完型填空这样一个NLP项目环境搭建的一个说明,本来想写在README.md中。第一次用github中的wiki,想想尝试一下也不错,然而格式非常的混乱,自己都满意,所以先在博客园记录一下,等github博客搭建成功了再说。

1. 操作系统:

作为programer,linux自然是首先选择,ubuntu,centos等等都可以。我用的是CentOS7.3,之前用Centos6.5各种报错,建议装最新版的linux系统,何为最新版?2016年以后出的linxu系统。
相关问题,后续给出。

2. 环境搭建:

以下操作建议用root用户进行。

2.1 anaconda(python2.7版)

这里给出清华大学开源镜像下载链接:
[anacondapython2.7最新版清华链接](https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda2-4.4.0-Linux-x86_64.sh)
安装方法:
bash Anaconda2-4.4.0-Linux-x86_64.sh

2.2 安装NLTK安装方法:

pip install NLTK
安装完成后,要在NLTK里下载punkt这个包。
[root@xiaolyu12 ~]# ipython
Python 2.7.13 |Anaconda 4.4.0 (64-bit)| (default, Dec 20 2016, 23:09:15)
Type "copyright", "credits" or "license" for more information.

IPython 5.3.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.

In [1]: import nltk

In [2]: nltk.download()
NLTK Downloader
---------------------------------------------------------------------------
d) Download l) List u) Update c) Config h) Help q) Quit
---------------------------------------------------------------------------
Downloader> d

Download which package (l=list; x=cancel)?
Identifier> punkt
Downloading package punkt to /root/nltk_data...
Package punkt is already up-to-date!

---------------------------------------------------------------------------
d) Download l) List u) Update c) Config h) Help q) Quit
---------------------------------------------------------------------------
因为我这里安装过,所以出现已经是最新的说明。

2.3 安装Kenlm

这个是本文的重点,异常的复杂:
下面这个链接是官网关于依赖包的安装说明,可以看懂的,照官网来,看不懂的继续往下看:
[kenlm官网关于依赖包的安装说明:](https://kheafield.com/code/kenlm/dependencies/)
说明:安装kenlm之前一定要看一下gcc 的版本(gcc -v)版本一定要>=4.8.否则会报下列错误:
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I. -I/root/anaconda2/include/python2.7 -c util/float_to_string.cc -o build/temp.linux-x86_64-2.7/util/float_to_string.o -O3 -DNDEBUG -DKENLM_MAX_ORDER=6 -std=c++11 -DHAVE_ZLIB
cc1plus: 警告:命令行选项“-Wstrict-prototypes”对 Ada/C/ObjC 是有效的,但对 C++ 无效
cc1plus: 错误:无法识别的命令行选项“-std=c++11”
error: command 'gcc' failed with exit status 1

----------------------------------------
Command "/root/anaconda2/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-NDhcKC-build/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-GP5mEP-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-NDhcKC-build/`
2.3.1 依赖包的安装:
cmake , xz, zlib , bzip2, boost (boost一定要放在最后安装,它要依赖前面的包)
(1)cmake的安装:因为我是Centos,这个我之前就有,采用yum安装的,编译安装也可以。(官网下载tar.gz,或者tar.bz)
yum install cmake
(2)xz的安装:官网下载最新的,以下给出的地址都是最新的。
wget http://tukaani.org/xz/xz-5.2.2.tar.gz
tar xzvf xz-5.2.2.tar.gz
cd xz-5.2.2
./configure
make
make install
(3)zlib的安装:
wget http://zlib.net/zlib-1.2.8.tar.gz
tar xzf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
make install`
(4) bzip2的安装:
wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
tar xzvf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6/
make
make install
(5)boost的安装:
wget https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.bz2
tar xjf boost_1_64_0.tar.bz2
./bootstrap.sh
./b2 install
说明这个我用源码编译安装出现问题,搞不定,现在将问题贴在这里,看到的可以一起解决一下:
.failed gcc.link.dll bin.v2/libs/iostreams/build/gcc-4.8.5/release/threading-multi/libboost_iostreams.so.1.64.0...

...found 14723 targets...
...updating 3 targets...
gcc.link.dll bin.v2/libs/iostreams/build/gcc-4.8.5/release/threading-multi/libboost_iostreams.so.1.64.0
/usr/bin/ld: /usr/local/lib/libbz2.a(bzlib.o): relocation R_X86_64_32S against `BZ2_crc32Table' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libbz2.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status

"g++" -o "bin.v2/libs/iostreams/build/gcc-4.8.5/release/threading-multi/libboost_iostreams.so.1.64.0" -Wl,-h -Wl,libboost_iostreams.so.1.64.0 -shared -Wl,--start-group "bin.v2/libs/iostreams/build/gcc-4.8.5/release/threading-multi/file_descriptor.o" "bin.v2/libs/iostreams/build/gcc-4.8.5/release/threading-multi/mapped_file.o" "bin.v2/libs/iostreams/build/gcc-4.8.5/release/threading-multi/bzip2.o" "bin.v2/libs/iostreams/build/gcc-4.8.5/release/threading-multi/gzip.o" "bin.v2/libs/iostreams/build/gcc-4.8.5/release/threading-multi/zlib.o" -Wl,-Bstatic -Wl,-Bdynamic -lz -lbz2 -lrt -Wl,--end-group -pthread -m64

...failed gcc.link.dll bin.v2/libs/iostreams/build/gcc-4.8.5/release/threading-multi/libboost_iostreams.so.1.64.0...
...skipped <pstage/lib>libboost_iostreams.so.1.64.0 for lack of <pbin.v2/libs/iostreams/build/gcc-4.8.5/release/threading-multi>libboost_iostreams.so.1.64.0...
...skipped <pstage/lib>libboost_iostreams.so for lack of <pstage/lib>libboost_iostreams.so.1.64.0...
...failed updating 1 target...
...skipped 2 targets...
那我最后是怎么搞定的呢?我用最简单的方法,yum安装:
yum install -y boost boost-devel boost-doc
2.3.2 kenlm的安装:
前面的依赖包安装成功,那么这一步就水到渠成了:
weget http://kheafield.com/code/kenlm.tar.gz
cd kenlm
mkdir build
cd build
cmake ..
make
搞定!

NLP中的用N-gram语言模型做英语完型填空的环境搭建的更多相关文章

  1. moodle中的完形填空题的文本编写方法

    moodle中的完形填空题的文本编写方法 [完形填空题]考题把一段文字挖去一些空,让考生根据上下文正确地完成这些填空.完型填空题中的一段短文可以包括各种题目,如选择,填空,和数字题等. 题目的编辑是在 ...

  2. NLP中的预训练语言模型(五)—— ELECTRA

    这是一篇还在双盲审的论文,不过看了之后感觉作者真的是很有创新能力,ELECTRA可以看作是开辟了一条新的预训练的道路,模型不但提高了计算效率,加快模型的收敛速度,而且在参数很小也表现的非常好. 论文: ...

  3. NLP中的预训练语言模型(二)—— Facebook的SpanBERT和RoBERTa

    本篇带来Facebook的提出的两个预训练模型——SpanBERT和RoBERTa. 一,SpanBERT 论文:SpanBERT: Improving Pre-training by Represe ...

  4. Deep Learning in NLP (一)词向量和语言模型

    原文转载:http://licstar.net/archives/328 Deep Learning 算法已经在图像和音频领域取得了惊人的成果,但是在 NLP 领域中尚未见到如此激动人心的结果.关于这 ...

  5. Word2Vec之Deep Learning in NLP (一)词向量和语言模型

    转自licstar,真心觉得不错,可惜自己有些东西没有看懂 这篇博客是我看了半年的论文后,自己对 Deep Learning 在 NLP 领域中应用的理解和总结,在此分享.其中必然有局限性,欢迎各种交 ...

  6. 从0到1,了解NLP中的文本相似度

    本文由云+社区发表 作者:netkiddy 导语 AI在2018年应该是互联网界最火的名词,没有之一.时间来到了9102年,也是项目相关,涉及到了一些AI写作相关的功能,为客户生成一些素材文章.但是, ...

  7. 图解BERT(NLP中的迁移学习)

    目录 一.例子:句子分类 二.模型架构 模型的输入 模型的输出 三.与卷积网络并行 四.嵌入表示的新时代 回顾一下词嵌入 ELMo: 语境的重要性 五.ULM-FiT:搞懂NLP中的迁移学习 六.Tr ...

  8. 理解NLP中的卷积神经网络(CNN)

    此篇文章是Denny Britz关于CNN在NLP中应用的理解,他本人也曾在Google Brain项目中参与多项关于NLP的项目. · 翻译不周到的地方请大家见谅. 阅读完本文大概需要7分钟左右的时 ...

  9. espnet中的transformer和LSTM语言模型对比实验

    摘要:本文以aishell为例,通过对比实验为大家介绍transformer和LSTM语言模型. 本文分享自华为云社区<espnet中的transformer和LSTM语言模型对比---以ais ...

随机推荐

  1. 使用HAL库函数建立STM32F2工程

    一.建立一个新的文件夹,新建三个文件夹User.Driver.Project,还可以加一个Doc存放工程的相关说明等等. 1.将STM32F2xx的库函数(HAL函数库)中的Drivers文件夹中的所 ...

  2. Ch1. Intro to Programming

    1-1 Input three integers and output the average number. Keep three decimal places.  #include<stdi ...

  3. OpenCV中的结构体、类与Emgu.CV的对应表

    OpenCv中的 C 结构 OpenCV中的 C++ 封装 Emgu.CV中的 C# 封装 OpenCV 和 Emgu.CV 中的结构罗列 谢谢阅读,有误希望指正 原文地址 Basic Structu ...

  4. javascript常用开发笔记:一个简单强大的js日期格式化方法

    前言:一直没找到好用的javascript日期格式化工具,自己写了一个,方便以后复用 1.主要功能 (1)支持任意顺序的日期格式排列:yyyy=年,MM=月,dd=日,HH=时,mm=分,ss=秒,s ...

  5. springMvc <form action="">提交跳转路径问题

    表单提交后,action的URL写的是, login/login.do,每次跳转后都变成login/ login/login.do,很显然是相对路径没有搞清楚. 应该弄清楚相对路径,并在JSP代码中加 ...

  6. javaScript操作DOM对象(看三遍,敲三遍,写三遍! 不会你找我)!!

    DOM是Document Object Model的缩写,即文档对象模型,是基于文档编程的一套API 使用javaScript操作DOM对象通常分为三类:1.DOM CORE        2.HTM ...

  7. jQuery未定义错误原因(jQuery is not define)

    使用jQuery时,必须把它写在最前面,这样浏览器才会先加载jQuery,否则会提示缺少对象. 正确 <script type="text/javascript" src=& ...

  8. 持续集成篇 --Hudson持续集成服务器的安装配置与使用

    样例项目参考视频教程:http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 IP:192.168.4.221  8G内存 ...

  9. laydate时间插件更换皮肤

    <script> ;!function(){ laydate.skin('molv'); laydate({ elem: '#demo' }) }();</script>

  10. Hibernate缓存和懒加载的坑你知道多少?这5个简单问题回答不上来就不敢说会用hibernate

    问题1:session.flush()调用之后,懒加载还生效吗? 如果不生效,那是抛异常还是没有任何反应,或者直接返回null? 答案:生效.可以理解为在同一个session当中,懒加载只会执行一次. ...