【工具包下载】NLTK免安装完整版.rar

李亮1975重庆

语料库快乐军政委
【工具包下载】NLTK免安装完整版.rar

我在完整NLTK安装过程的基础上,进行了少量优化与补充之后,这个压缩包被解压缩之后就可以双击文件夹中的python.exe或“DOS here.bat”而开始你的NLTK之旅了!NLTK免安装完整版.rar让你摆脱了python的安装过程,摆脱了Numpy以及PyYAML的安装过程,摆脱了缓慢且容易出错或中断的完整数据包的下载过程,摆脱了NLTK主程序的安装过程。无论是新手或老手,都能“一键安装与运行NLTK”了,你不用安装Python或ActivePython之类了,哈哈:D

NLTK是神马
全称是Natural Language ToolKit(翻译为“自然语言处理工具箱”),官方网站www.nltk.org,是基于Python编程语言而制作的开放源代码的免费软件。如果把1.5GB的60个语料库排除在外,软件及其基本数据包只有130MB。NLTK的开发团队核心成员有6人。

NLTK有哪些强大功能?
[1] 提供了文本分类的3种算法,9种词性标注算法,5种自动断词算法,内置60个语料库;
[2] 借助内置的WordNet,能查询近义词反义词之类的语义场信息,能计算近义词相似度;
[3] 提取文本中的搭配词与语块;
[4] 自建语料库,提取其词表,提取其语块,标注其词性与句法关系,分类其语篇;
[5] 支持对16种语言的自动断句,提供了对15种语言的词形还原,生成句法树;
[6] 对网页进行子链接的提取,对网页进行html标签剔除;
[7] 语料库之间的句对齐(alignment);


【英文版】20页的简明教程《NLTK - the Good, the Bad, and the Awesome》
http://www.docin.com/p-231267036.html

【英文版】272页的2010版的英文教程《Python Text Processing with NLTK 2.0 Cookbook》
http://www.docin.com/p-316846270.html (在线全文阅读)
http://ishare.iask.sina.com.cn/f/15685888.html (免积分,直接下载)


【中文翻译版】《NLTK Natural Language Processing with Python》
http://ishare.iask.sina.com.cn/f/23996193.html (免积分,直接下载)

【英文版】《基于NLTK的文本挖掘》
http://ishare.iask.sina.com.cn/f/21755976.html 免积分,直接下载

“百度云”的下载页面(NLTK免安装完整版.rar,295MB,解压后是1.6GB,无需百度账号注册就可以下载
http://pan.baidu.com/s/1gRy7
 
NLTK之初体验!

NLTK之初体验!

在你下载且解压缩我的免安装包到一个独立的单独的文件夹之后,你双击该文件夹,就看到python.exe,就看到“黑底白字的DOS窗口”弹出来了,这个窗口是“Python 2.7.3版的交互窗口”,可以输入NLTK指令了,因为这里已经集成了NLTK及其完整后台数据呢。此刻,你可以输入或拷贝下面的这行代码到窗口中,然后回车(点Enter键)……

import nltk; nltk.pos_tag(nltk.word_tokenize("I am a good student."));

你在DOS窗口点右键,无法拷贝么?那,你用鼠标右键点DOS窗口的顶部的蓝色标题栏吧,你就看到弹出的菜单有“编辑”,“编辑”的子菜单就有“粘贴”了,当然你要首先复制一下。

那么,你指令输入且回车之后,就看到下面的结果……
[('I', 'PRP'), ('am', 'VBP'), ('a', 'DT'), ('good', 'JJ'), ('student', 'NN'), ('
.', '.')]


PRP是代词,VBP是BE动词,DT是限定词,JJ是形容词,NN名词,"."表示句末标点哟;

import nltk; 这句话是告诉python,你要调用nltk,让python加载nltk的核心模块;分号是python编程语言的"语句结束标志",如果一个语句占一行就可以省略,如果多个语句在同一行就必须用分号来表示语句之间的"分隔符",否则程序就要报错。

nltk.word_tokenize("I am a good student.") 是自动断词的函数,它的参数就是五个英语单词和句号,函数就像一个黑箱,你让它吞下"一个或多个参数",它就吐出"一个或多个计算结果",计算结果有时候是字符串,有时候是一组字符串,有时候是一些数值;

nltk.pos_tag()是自动词性标注的函数,它的参数是nltk.word_tokenize(),所以这两个函数形成了"嵌套",里面的函数的计算结果就作为外面的函数的参数了。

I am a good student.是一个我们希望处理的字符串,必须用英语双引号把它的开头和结尾进行标志,这个字符串才是有效的,如果不用首尾的双引号就会导致运行错误。

字母的大小写也是初学者要注意的哟,如果你把nltk输入为NLTK或Nltk都是要导致运行错误的;如果你把nltk.pos_tag输入为nltk.POS_tag也是错误的;如果你把nltk.word_tokenize输入为nltk.Word_Tokenize,也得到如下的错误提醒
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'pos_TAG'


如果你需要对一个TXT文件进行词性标注,你就可以输入下面的一行代码(虽然有点长,圆括号也层层叠叠的,但是你拷贝一下,还是轻松吧)……
import nltk; nltk.pos_tag(nltk.word_tokenize(open("c:\1.txt").read()));
上面是假设你对c盘下的1.txt进行处理,你如果是对d盘的mycorpus文件夹的hello.txt进行处理就要写成……

import nltk; nltk.pos_tag(nltk.word_tokenize(open("d:\mycorpus\hello.txt").read()));
你要注意上面的斜线和文件路径的完整表达形式哟

遗憾的是,NLTK并不是一个依靠菜单进行操作的Windows软件,简单的短命令只是给我们它的功能的一个小展示而已,要让NLTK能干实事或干大事,就必须自己掌握初步的Python语言编程。

下面的8行代码你复制一下,然后保存为mytagger.txt这个名称是任意取的,最好是英文名称):
import nltk;
output="";
x=open("d:\1.txt").read();
y=nltk.word_tokenize(x);
z=nltk.pos_tag(y);
for v in z: output=output+v[0]+"_"+v[1]+" ";
open("d:\2.txt","w").write(output);
print "Game Over";

上面的代码也许有点复杂,但是却已经是一个完整可靠的POS Tagger(词性标注器)了,它的功能是读取d盘的1.txt文件,进行自动词性分析,输出结果到d盘的2.txt(这个文件事先并不存在,是NLTK运行而自动新建的)。

那么,上面的mytagger.txt该如何运行呢?首先,你要把mytagger.txt拷贝到NLTK文件夹去;其次,你要双击"DOS here.bat"这个文件,你就会看到"黑底白字的DOS窗口"出来了,在这个窗口中,你输入下面的指令:
python.exe mytagger.txt

当然,上面的指令的正常运行还必须你要提供d盘的1.txt有正常的英语文章在里面。当你输入上面的"
python.exe mytagger.txt",你就回车,稍等片刻,当你看到"Game Over"这行字出现,程序就运行完毕,你就可以查看2.txt的内容是否正常了。假设你在1.txt中就是含有"I am a good student.",那么,自动标注它之后形成的2.txt就会含有下面的内容了:
I_PRP am_VBP a_DT good_JJ student_NN ._.
上面的内容就是"下划线型的词性标注",就可以用AntConc进行检索了呢。我的《语料检索的速成教程:已经词性赋码语料的检索》在豆丁网有全文阅读,欢迎边看边操作下
http://www.docin.com/p-466643054.html

如果你是需要"斜线型标注"或"反斜线型标注",你只需要把上面代码的第6行的下划线改为"\"或"/"即可。
 
Last edited:
回复: 【工具包下载】NLTK免安装完整版.rar

谢谢李博!
但是输入import nltk; nltk.pos_tag(nltk.word_tokenize("I am a good student."));后。提示import不是有效的内部和外部命令也不是可运行的程序和批处理文件。
求解?
 
回复: 【工具包下载】NLTK免安装完整版.rar

谢谢李博!
但是输入import nltk; nltk.pos_tag(nltk.word_tokenize("I am a good student."));后。提示import不是有效的内部和外部命令也不是可运行的程序和批处理文件。
求解?

你应该双击python.exe,而不是双击“DOS here.bat“的。因为双击“DOS here.bat”是进入DOS命令状态,是输入DOS命令(例如python.exe 1.txt)来操控python.exe去执行某个脚本的;而双击“python.exe”是进入python状态,就无法输入DOS命令,而是输入python代码(例如import nltk这样的)。
 
Last edited:
回复: 【工具包下载】NLTK免安装完整版.rar

真是一款好工具!工欲善其事,必先利其器!
 
回复: 【工具包下载】NLTK免安装完整版.rar

谢谢李博士,我希望能多有几个像李亮博士这样的人就好了
 
回复: 【工具包下载】NLTK免安装完整版.rar

李博士,请问我也是输入import nltk; nltk.pos_tag(nltk.word_tokenize("I am a good student."));后。提示import不是有效的内部和外部命令也不是可运行的程序和批处理文件。
我是双击python.exe的呢
 
回复: 【工具包下载】NLTK免安装完整版.rar

李博士,请问我也是输入import nltk; nltk.pos_tag(nltk.word_tokenize("I am a good student."));后。提示import不是有效的内部和外部命令也不是可运行的程序和批处理文件。
我是双击python.exe的呢
你可以加我QQ,我用QQ远程协助看看你电脑屏幕操作过程就知道问题出在哪里了(或许是操作系统版本导致,或许是其他软件干扰),我QQ是492130980
 
回复: 【工具包下载】NLTK免安装完整版.rar

你应该双击python.exe,而不是双击“DOS here.bat“的。因为双击“DOS here.bat”是进入DOS命令状态,是输入DOS命令(例如python.exe 1.txt)来操控python.exe去执行某个脚本的;而双击“python.exe”是进入python状态,就无法输入DOS命令,而是输入python代码(例如import nltk这样的)。

多谢!!!好人一生平安!!!
 
回复: 【工具包下载】NLTK免安装完整版.rar

请问您那款软件能直接计算方差和p-value呢? 新手入门,请多多指教,谢谢!!
 
回复: 【工具包下载】NLTK免安装完整版.rar

请问您那款软件能直接计算方差和p-value呢? 新手入门,请多多指教,谢谢!!
你说的“那款”是指NLTK么?如果是,当然可以算了,方差只是描述性统计的一个值,p值是所有的推断性统计的结果值,nltk有spss的全部计算功能,虽然不是菜单操作。
 
回复: 【工具包下载】NLTK免安装完整版.rar

谢谢李哥,非常好的语言处理工具,熟悉中......
 
回覆: 【工具包下载】NLTK免安装完整版.rar

李博士好,

想请教几个问题。
首先,该如何在windows7英文版介面python上处理汉字呢?
我在网路上下载了复旦大学的文本分类语料库,想在个别的分类中找寻搭配词。
该语料库的所有文件应该是以gb2312编码。
我应该怎麽做才能在python上将所有文件正确显示汉字呢?(只在第一行执行#-*-coding: gbk-*-)还是不能成功。会显示类似这样的字串\xca\xd5\xb

另外,网路上有人推荐结巴分词在nltk上做汉语分词,不知您是否有其他推荐的分词工具。或能不能用nltk里的分词工具操作即可。

最後,想请教nltk内是否有工具清除中文的停止词呢?

先在此谢谢您的回复
 
回复: 提供15个描述性统计值的在线统计计算器!

李亮博士,关于这条命令:import nltk;
output="";
x=open("d:\1.txt").read();
y=nltk.word_tokenize(x);
z=nltk.pos_tag(y);
for v in z: output=output+v[0]+"_"+v[1]+" ";
open("d:\2.txt","w").write(output);
print "Game Over";
可不可以修改上面的命令,把x=open("d:\1.txt").read();里面的命令该为读取某个文件夹而不单单是1.txt这个文件,我做语料库的时候文件分的比较细,如果一个个文件的标注很麻烦。
 
回复: 提供15个描述性统计值的在线统计计算器!

李亮博士,关于这条命令:import nltk;
output="";
x=open("d:\1.txt").read();
y=nltk.word_tokenize(x);
z=nltk.pos_tag(y);
for v in z: output=output+v[0]+"_"+v[1]+" ";
open("d:\2.txt","w").write(output);
print "Game Over";
可不可以修改上面的命令,把x=open("d:\1.txt").read();里面的命令该为读取某个文件夹而不单单是1.txt这个文件,我做语料库的时候文件分的比较细,如果一个个文件的标注很麻烦。
朝着你要的方向去编程,情况就复杂了,要付出好些劳动才能实现并且很难做到某个样子就满足多方面的需求。首先,指向一个文件夹的时候,就涉及到自动扫描所有子文件夹的文本文件,这需要专门编程;其次,指向一个文件夹的时候,里面的多份txt文件可能是ansi或utf8或unicode或unicode big endian之类的文字编码,这需要让程序进行自动判断或者让操作者进行预先指定,而且最好是这些文件并不是多种文字编码而是某种文字编码;再次,是如何从用户获取他所需的哪个文件夹的完整路径,这可能需要做个“文件夹选择对话框”或者需要做个txt或ini的配置文件来让用户先填写好。我暂时没空做一个这样的NLTK程序,因为总是担心直接的python程序让较多使用者不知道该如何运行。
 
Back
顶部