随笔分类 -  Python自然语言处理

《NLTK自然语言处理中文版》根据此书的学习,总结的简单的笔记
摘要:信息一个重要的形式是结构化数据。实体和关系的可预测的规范的结构。 我们首先将自然语言句子这样的非结构化数据转换成表7-1的结构化数据。 然后利用强大的查询工具,如SQL,这种从文本获取意义的方法被称作信息提取。 信息提取结构 如图显示了简单的信息提取系统的结构。 1、首先使用句子分割器将该文档的原始文本分割成句 2、使用分词器将每个句子进一步细分为词 3、对每个句子进行词性标... 阅读全文
posted @ 2013-05-27 15:36 createMoMo 阅读(449) 评论(0) 推荐(0)
摘要:分类器可以帮助我们理解自然语言中存在的语言模式,允许我们建立明确的模型捕捉这些模式。 这些明确的模型有两个重要的目的: 1、帮助我们了解语言模式 2、可以被用来预测新的语言数据 模型告诉我们什么? 描述性模型捕捉数据中的模式,但是它们并不提供任何有关数据包含这些模式的原因的信息。 解释性模型试图捕捉造成语言模式的属性和关系。 大多数语料库自动构建的模型是描述性模型,它可以告诉哪些特征... 阅读全文
posted @ 2013-05-27 15:18 createMoMo 阅读(271) 评论(0) 推荐(0)
摘要:6.4决策树 决策树是一个简单的为输入值选择标签的流程图。这个流程图由检查特征值的决策节点 和分配标签的叶节点组成。为输入值选择标签,我们以流程图的初始决策节点(称为其根节点)开始。 熵和信息增益在决策树桩确定上的应用(可以自行查找相关资料阅读) 可以参考:http://blog.csdn.net/athenaer/article/details/8425479 决策树的一些... 阅读全文
posted @ 2013-05-27 15:05 createMoMo 阅读(1501) 评论(0) 推荐(0)
摘要:测试集 测试集要注意可用于测试和可用于训练的数据量之间的权衡。 选择测试集的另一个需要考虑的是测试集中实例与开发集中的实例的相似程度。这两个数据集越相似,我们对将评估结果推广到其他数据集的信心就越小。 准确度 用于评估一个分类的最简单的度量是准确度。 解释一个分类器的准确性得分,考虑测试集中单个类标签的频率是很重要的。 精确度和召回率 •真阳性是相关项目中我们正确识别为相关的。 ... 阅读全文
posted @ 2013-05-27 00:33 createMoMo 阅读(486) 评论(0) 推荐(0)
摘要:句子分割 第一步,是获得一些已经被分割的句子的数据,将他转换成一种合适的提取特征的形式。 sents=nltk.corpus.treebank_raw.sents()tokens=[]boundaries=set()offset=0for sent in nltk.corpus.treebank_raw.sents(): tokens.extend(sent) offset+... 阅读全文
posted @ 2013-05-26 22:55 createMoMo 阅读(503) 评论(0) 推荐(0)
摘要:模式识别是自然语言处理的一个核心部分。 6.1有监督分类 分类:是为给定的输入选择正确的类标签任务。 有监督分类:如果分类的基础基于包含每个输入正确标签的训练语料。 有监督分类的使用框架图如下: 性别鉴定 让我们以性别鉴定这个简单的例子,再次解释上述图形的流程。 背景:男女的名字是有一定背景的,以此为背景来解释。在这里我们以每个名字的最后一个字母为特征来标志是否为男女。 1、确... 阅读全文
posted @ 2013-05-26 21:56 createMoMo 阅读(1505) 评论(0) 推荐(0)
摘要:形态学线索从词的内部结构可能为这个词分类提供有用的线索。例如:-ness与形容词结合可能是一个名词;-ment是与一些动词结合产生一个名词的后缀;英语的动词也是形态复杂的。例如:-ing有可能是现在分词、也有可能是动名词句法线索一个词可能出现的典型上下文例如:假设我们已经确定了名词类,我们可以说,英语的形容词的句法标准是可以立即出现在一个名词前,或者紧跟在be或者very的后面语义线索一个词的意思对其词汇范畴是一个有用的线索。新词比如很多的新词都是名词,这些名词属于开放类;介词被认为是封闭类,因为只有有限的词汇属于这个类别;词性标记集中的形态学例如有的词却有不同的形态,在更细粒度的分词上需要注 阅读全文
posted @ 2013-05-26 16:35 createMoMo 阅读(1248) 评论(0) 推荐(0)
摘要:Brill标注,一种归纳标注方法。基于转换的学习:猜每个词的标记,然后返回和修复错误。在这种方式中,Brill标注器将会陆续将一个不良标注的文本转换成一个更好的。需要已经标注的训练数据来评估标注器的猜测是否是一个错误。 (1) ThePresidentsaid he willask Congressto increase grantsto states for vocational rehabi... 阅读全文
posted @ 2013-05-26 16:09 createMoMo 阅读(602) 评论(0) 推荐(0)
摘要:一元标注(Unigram Tagging) 一元标注基于简单的统计算法,对每个标识符分配这个独特的标识符最有可能的标记。 >>>from nltk.corpusimport brown>>>brown_tagged_sents= brown.tagged_sents(categories='news')>>>brown_sents= brown.sents(categories='new... 阅读全文
posted @ 2013-05-26 15:50 createMoMo 阅读(1589) 评论(0) 推荐(0)
摘要:在这里有不同的方式来给文本自动添加词性标记。 一个词的标记,要依赖于这个词和它在句子中的上下文。 所以:我们将处理句子层次而不是词汇层次的数据。 下面的所有代码示例中都以这些代码为基础: >>>from nltk.corpusimport brown>>>brown_tagged_sents= brown.tagged_sents(categories='news')>>>brown... 阅读全文
posted @ 2013-05-26 11:00 createMoMo 阅读(991) 评论(0) 推荐(0)
摘要:字典数据类型(其他编程语言可能称为关联数组或者哈希数组) 索引链表VS字典(略) Python字典 #初始化一个空字典 pos={} #字典的一些其他用法pos.keys0,pos.values(),pos.items() #定义一个非空字典 >>>pos= {'colorless':'ADJ', 'ideas': 'N', 'sleep': 'V', 'furiously':... 阅读全文
posted @ 2013-05-25 23:18 createMoMo 阅读(772) 评论(0) 推荐(0)
摘要:什么是词性标注? 将词性按照它们的词性分类以及相应的标注它们的过程被成为词性标注。 词性也成为词类,或者词汇范畴。 用于特定任务的标记的集合被称为一个标记集。 5.1使用词性标注器 词性标注器的简单例子 text=nltk.word_tokenize(“And now for something completely different”)nltk.pos_tag(text)#查... 阅读全文
posted @ 2013-05-25 22:24 createMoMo 阅读(1144) 评论(0) 推荐(0)
摘要:Matplotlib绘图工具、NetwordX工具可以自行查阅相关资料。CSV读取CSV的格式import csvinput_file=open('lexicon.csv','rb')for row in csv.reader(input_file): print rowNumPyNumPy中的多维数组对象>>>from numpy import array167>>>cube = array([ [[0,0,0], [1,1,1], [2,2,2]],... [[3,3,3], [4,4,4], [5,5,5]],... [ 阅读全文
posted @ 2013-05-25 15:12 createMoMo 阅读(269) 评论(0) 推荐(0)
摘要:自然语言处理当中常用的算法分而治之:1、分成两半分给另外两个人来排序,他们又可以做同样的事情2、得到两个排序号的卡片堆,合并成单一的排序堆递归在这里用一个例子来说明递归、构建一个字母查找树。def insert(trie,key,value): if key: fist,rest=key[0],key[1:] if fist not in trie: trie[first]={} insert(trie[first],rest,value) else: trie['value']=value >>>trie = nltk.defaultdict(dict) & 阅读全文
posted @ 2013-05-25 15:00 createMoMo 阅读(440) 评论(0) 推荐(0)
摘要:Python模块的结构一个模块可以包含用于创建和操纵一种特定的数据结构,如语法树的代码,或者执行特定的处理任务,如绘制语料统计图表的代码。下面是一个比较标准的模块文件的docstring的写法,仅供参考:#NaturalLanguageToolkit:DistanceMetrics##Copyright(C) 2001-2009 NLTKProject#Author:EdwardLoper <edloper@gradient.cis.upenn.edu># StevenBird<sb@csse.unimelb.edu.au># TomLippincott<tom@ 阅读全文
posted @ 2013-05-25 14:31 createMoMo 阅读(325) 评论(0) 推荐(0)
摘要:最近在读导师给的《Natural Language Processing with Python》.在读到11章11.5这一小节时,遇到这样一段代码。from nltk_contrib import toolbox其实,在我安装的Python和nltk包里面,并没有nltk_contirb。我是又单独在官网上下载的nltk_contrib。尽管现在可以使用了,但是我还是在疑问nltk和nltk_contrib之间的关系。由于国内的网站上相关的资料太少,貌似又没有人提出这个疑问(难道是我太钻牛角了?)。于是,我在谷歌论坛上,发表了一个帖子。问题如下:My questions are as fol 阅读全文
posted @ 2013-05-25 14:24 createMoMo 阅读(618) 评论(0) 推荐(0)
摘要:4.3风格的问题详细请参考Python相关书籍或者资料。4.4函数:结构化编程的基础#怎样比较正规的写一个函数import re def get_text(file): “””Read text from a file,normailizing whites space and stripping HTML markup.””” text=….. …. return text文档说明函数docstringdef accuracy(reference, test): """Calculatethe fraction of test items that equal 阅读全文
posted @ 2013-05-24 23:24 createMoMo 阅读(357) 评论(0) 推荐(0)
摘要:我们应该知道,我们常用的有三种序列。他们分别是:字符串、链表、还有一种为元组。 >>>t ='walk', 'fem', 3 >>>t ('walk', 'fem', 3) >>>t[0] 'walk' >>>t[1:] ('fem', 3) >>len(t)序列类型上的操作遍历操作:zip函数 >>>words= ['I', '... 阅读全文
posted @ 2013-05-24 20:41 createMoMo 阅读(217) 评论(0) 推荐(0)
摘要:赋值 注意赋值有值赋值和引用赋值(在这里不详细介绍,可以查阅Python相关资料) 等式 ==,只判断值是否相等 如果使用is,则是在判断值的基础上还会判断是否是同一个对象 条件语句 if 'cat' in animals: print 1 elif 'dog' in animals: print 2#不要忘记any和all all(len(w)... 阅读全文
posted @ 2013-05-24 20:22 createMoMo 阅读(135) 评论(0) 推荐(0)
摘要:从链表到字符串silly=['We', 'called', 'him', 'Tortoise', 'because', 'he', 'taught', 'us', '.']‘ ’.join(silly)'We calledhim Tortoisebecausehetaught us.’#join()方法适合于一个字符串的链表字符串与格式#字符串格式化表达式for word in fdist:print ‘%s->%d;’%(word,fd 阅读全文
posted @ 2013-05-24 20:15 createMoMo 阅读(325) 评论(0) 推荐(0)