05 2013 档案

摘要:前面章节的简单总结 前面的学习中,主要焦点在与 词汇。 如何识别,分析词汇的结构、分配词汇类别、以及获得词汇的含义。 还有如何识别词汇序列或者n-gram的模式。 8.1一些语法困境 语言数据和无限可能性 每天都在增加电子语言,数据量是非常大的; 句子的组合具有无线的可能性; 普遍存在的歧义 让我们仔细看看短语I shot an elephant in mypajamas中的歧义... 阅读全文
posted @ 2013-05-30 23:51 createMoMo 阅读(372) 评论(0) 推荐(0)
摘要:7.5命名实体识别(NER) 目标是识别所有文字提及的命名实体。 可以分成两个子任务:确定NE的边界和确定其类型。 NLTK提供了一个已经训练好的可以识别命名实体的分类器,如果我们设置参数binary=True,那么命名实体只被标注为NE,没有类型标签。可以通过代码来看: >>>sent = nltk.corpus.treebank.tagged_sents()[22]>>>prin... 阅读全文
posted @ 2013-05-30 23:26 createMoMo 阅读(6230) 评论(0) 推荐(0)
摘要:用级联分块器构建嵌套结构 例如如下,是名词短语、介词短语、动词短语和句子的模式。一个四级块语法器。 grammar= r"""NP:{<DT|JJ|NN.*>+} #Chunksequences of DT,JJ, NNPP:{<IN><NP>} #Chunkprepositions followed byNPVP:{<VB.*><NP|PP|CLAUSE>+$} #Chunkverbs... 阅读全文
posted @ 2013-05-30 22:50 createMoMo 阅读(576) 评论(0) 推荐(0)
摘要:读取IOB格式与CoNLL2000分块语料库 CoNLL2000,是已经加载标注的文本,使用IOB符号分块。 这个语料库提供的类型有NP,VP,PP。 例如: hePRPB-NPaccepted VBDB-VPthe DTB-NPpositionNNI-NP...chunk.conllstr2tree()的函数作用:将字符串建立一个树表示。例如: >>>text = '''... ... 阅读全文
posted @ 2013-05-30 22:09 createMoMo 阅读(1210) 评论(0) 推荐(0)
摘要:实体识别的基本技术是分块(chunking) 名词短语分块(NP-分块) 这里有一段已经标注的例子: 方括号中是名词标注的例子。 NP-分块信息最有用的来源之一是词性标记。 为了创建一个NP块,我们将首先定义一个块语法,规定了句子应该如何分块。 我们使用正则表达式来定义,规则可以我们自己定:一个NP块由一个可选的限定词(DT)后面跟着任何数目的形容词(JJ),然后是一个名词(N... 阅读全文
posted @ 2013-05-30 17:39 createMoMo 阅读(884) 评论(0) 推荐(0)
摘要:信息一个重要的形式是结构化数据。实体和关系的可预测的规范的结构。 我们首先将自然语言句子这样的非结构化数据转换成表7-1的结构化数据。 然后利用强大的查询工具,如SQL,这种从文本获取意义的方法被称作信息提取。 信息提取结构 如图显示了简单的信息提取系统的结构。 1、首先使用句子分割器将该文档的原始文本分割成句 2、使用分词器将每个句子进一步细分为词 3、对每个句子进行词性标... 阅读全文
posted @ 2013-05-27 15:36 createMoMo 阅读(450) 评论(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 阅读(1503) 评论(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 阅读(1506) 评论(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 阅读(604) 评论(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 阅读(1592) 评论(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 阅读(774) 评论(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 阅读(1149) 评论(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 阅读(619) 评论(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)
摘要:分词是一个更普遍的分割问题的一个实例。在这里我们还会看到分割问题的另外两个实例2.断句#NLTK的Punkt句子分割器sent_tokenizer=nltk.data.load(‘tokenizers/punkt/english.pickle’)text=nltk.corpus.gutenberg.raw(‘chesterton-thursday.txt’)sents=sent_tokenizer.tokenize(text)#注意:断句其实是困难的,因为在一些缩写里面也包括标记句子结束的句号。(6.2中还有一种断句方法)分词比如,会遇到这样的例子:a. doyouseethekittyb.s 阅读全文
posted @ 2013-05-24 20:11 createMoMo 阅读(1065) 评论(0) 推荐(0)
摘要:分词是将字符串切割成可识破的构成一块语言数据的语言单元。 分词的简单方法 raw = """'When I'M a Duchess,'she said to herself, (not in a very hopeful tone... though), 'I won'thave any pepper in mykitchenATALL.Soupdoesvery... wellwithout--M... 阅读全文
posted @ 2013-05-24 20:05 createMoMo 阅读(1578) 评论(0) 推荐(1)
摘要:词干提取器porter=nltk.PorterStemmer()lancaster=nltk.LancasterStemmer()[porter.stem(t) for t in tokens][lancaster.stem(t) for t in tokens] 词形归并#WordNet词形归并器删除词缀产生的词wnl=nltk.WordNetLemmatizer()[wnl.lemmatize(t) for t in tokens] 阅读全文
posted @ 2013-05-24 16:15 createMoMo 阅读(338) 评论(0) 推荐(0)
摘要:提取字符块#找到所有的无重叠的匹配指定的正则表达式re.findall(r’[aeiou]’,word)#看看一些文本中的两个或者两个以上的元音序列,并确定他们的相对频率wsf=sorted((set(nltk.corpus.treebank.words()))fd=nltk.FreqDist(vs for word in wsj for vs in re.findall(r’[aeiou]{2,}’,word))fd.items()在字符块上做更多事情#我们可以对元组进行索引操作,这样可以更方便的使用nltk.Index()查找词干抽出一个词的词干的方法有很多... 阅读全文
posted @ 2013-05-24 16:14 createMoMo 阅读(467) 评论(0) 推荐(0)
摘要:import re使用基本的元字符#检测以XXX为结尾[w for w in wordlist if re.search(‘ed$’,w)]#.匹配任何单个字符,^以X开头[w for w in wordlist if re.search(‘^..j..t..$’,w)]#?表示出现0或者1次(具体正则表达式相关内容,请查阅相关资料)范围与闭包#寻找一些由相同的按键次序打出的词汇[w for w in wordlist if re.search(‘^[ghi][mno][jkl][def]$’,w)]#+,*有的时候被称为Kleene闭包或者干脆闭包#一些常用的正则表达式基本元字符 阅读全文
posted @ 2013-05-24 16:12 createMoMo 阅读(358) 评论(0) 推荐(0)
摘要:Unicode支持超过一百万种字符;每个字符分配一个编号,成为编码点;在Python中,编码点写作\uXXXX的形式,其中XXXX是四位十六进制数;从文件中提取已编码文本#得到一个文件的路径(知道这个文件的编码)path= nltk.data.find('corpora/unicode_samples/polish-lat2.txt')import codecsf=codecs.open(path,encoding=’latin2’)#从文件对象f读出的文本将以Unicode返回,如果想在终端查看,必须使用合适的编码对它进行编码;unicode_escape是一种虚拟的编码fo 阅读全文
posted @ 2013-05-24 16:10 createMoMo 阅读(495) 评论(0) 推荐(0)
摘要:字符串的基本操作#字符串跨行(这种方式不会有换行,简单的字符串连接)Couplet=”Shall I compare thee to a Summer’s day?"\“Thou are more lovely and more temperate:”Couplet=(“Rough winds do shake the darling buds of May,”“And Summer’s lease hath all too short a date:”)#如果想包含换行,可以使用三重引号Couplet=”””Shall I compare thee to a Summer’s da 阅读全文
posted @ 2013-05-24 16:06 createMoMo 阅读(317) 评论(0) 推荐(0)
摘要:本章开始导入语句from __future__ import divisionimport nltk,re,pprint 3.1从网络和硬盘访问文本电子书from urllib import urlopenurl=”http://www.gutenberg.org/files/2554/2554.txt”raw=urlopen(url).read()#如果使用了Internet代理,需要手工指定代理proxies={‘http’:’http://www.someproxy.com:3128’}raw=urlopen(url,proxies=proxies).read()#对得到的文本分词操作t 阅读全文
posted @ 2013-05-24 16:05 createMoMo 阅读(393) 评论(0) 推荐(0)
摘要:WordNet是面向语义的英语词典,类似于传统词典,但具有更丰富的结构。NLTK中包括英语WordNet,有很多词和同义词的集合。意义与同义词具有相同含义的词是同义词。#在wordnet中怎样探索这些同义词from nltk.corpus import wordnet as wnWn.synsets(‘motorcar’)[Synset(‘car.n.01’)]通过对这段程度的分析可以知道:Motorcar只有一个可能的含义;这个含义被定义为car.n.01,car的第一个名词的意义。Car.n.01被称为synset或者同义词集#意思相同的词或者词条的集合wn.synset(‘car.n.0 阅读全文
posted @ 2013-05-24 10:08 createMoMo 阅读(728) 评论(0) 推荐(0)
摘要:词典或者词典资源是一个词/或短语以及一些相关信息的集合,例如:词性和词意定义等相关信息。一个词项包括词目(也叫词条)以及其他附加信息。例如:词性和词意定义。两个不同的词拼写相同,被称为同音异义词。词汇列表语料库NLTK包括一些仅仅包含词汇列表的语料库。#过滤文本,这个函数计算文本的词汇表,然后删除所有在现有的词汇列表中出现的元素,只留下罕见或者拼写错误的词。def unusual_words(text):text_vocab=set(w.lower() for w in text if w.isalpha())english_vocab=set(w.lower() for w in nltk. 阅读全文
posted @ 2013-05-24 10:04 createMoMo 阅读(462) 评论(0) 推荐(0)
摘要:使用文本编辑器创建程序我们可以通过Idle创建一个新的文件,然后输入代码,最后进行保存。比如我们保存了一个名为monty.py的文件,想引进做同样的事情的时候,就可以使用From monty import *函数例如我们可以自己定义具有某种功能的函数:def lexical_diversity(my_text_data): Word_count=len(my_text_data) Vocab_size=len(set(my_text_data)) Diversity_score=word_count/vocab_size return diversity_score模块在一个文件中... 阅读全文
posted @ 2013-05-22 12:32 createMoMo 阅读(288) 评论(0) 推荐(0)
摘要:条件概率分布是频率分布的集合,每个频率分布有一个不同的条件。这个条件通常是文本的类别。它的每对的形式是:(条件、事件)按文体计数词汇#先从语料库中设置条件频率分布From nltk.corpus import brownCfd=nltk.ConditionalFreqDist((genre,word)For genre in brown.categories()For word in brown.words(categories=genre)#可以选择自己感兴趣的进行查看,组成一个以对为元素的链表Genre_word=[(genre,word)For genre in [‘news’,’rom 阅读全文
posted @ 2013-05-22 12:30 createMoMo 阅读(666) 评论(0) 推荐(0)
摘要:古藤堡语料库(电子文本档案经过挑选的一小部分文本)#语料库中所有的文件Import nltkNltk.corpus.gutenberg.fileids() From nltk.corpus import GutenbergGutenberg.fileids()Emma=Gutenberg.words(‘austen-emma.txt’) #挑选其中的某一部著作进行操作Emma=nltk.corpus.gutenberg.words(‘austen-emma.txt’)Num_chars=len(Gutenberg.raw(fileid))Num_words=len(Gutenberg.word 阅读全文
posted @ 2013-05-22 12:27 createMoMo 阅读(2580) 评论(0) 推荐(0)
摘要:在11.4使用XML这一节当中,有一段代码在我的系统上运行不过去。书中给出了提示,如果Python在2.5以下的话,那么有可能会运行不过去。但是我查了自己的版本符合要求,是2.5的版本。具体的代码在这里:>>>from nltk.etree.ElementTree import ElementTree也就是引入XML处理的ElementTree这句的时候,出现了错误。Traceback (most recent call last): File "<pyshell#5>", line 1, in <module> from nltk 阅读全文
posted @ 2013-05-20 20:00 createMoMo 阅读(3083) 评论(0) 推荐(0)
摘要:我也是一名NLP的新手,导师给了我们入门的学习资料,便是《Natural Language Processing with Python》的国内爱好者免费翻译的中文版。在中文版中,难免有一些小错误,大部分错误经过自己的稍微仔细研读可以改正过来。 在这里发现了一处代码上的小错误,供大家分享。在11.3数据采集中的“处理濒危语言时特别注意事项”小节里面,有一处将辅音字母顺序规范化的代码。这段代码其实并不难理解。但是在中文版的翻译中,可能是由于排版者的不小心疏忽,造成了排版错误。在中文版的当中,这段代码是这样的:>>>mappings= [('ph', 'f 阅读全文
posted @ 2013-05-19 22:14 createMoMo 阅读(649) 评论(0) 推荐(0)
摘要:其实,出现这个问题很简单。会有三种可能:1、没有安装Prover9。你可以根据这个链接进行下载:http://www.cs.unm.edu/~mccune/mace4/download/LADR1007B-win.zip(适合Windows系统),如果你的操作系统是别的,那么也有相对应的版本,可以去官网进行下载。那么第2种可能,就是设置不当,还是会造成无法找到Prover9这个错误。根据Python的提示,“PROVER9HOMEenvironment variable”我们需要自己设置一个系统变量来使程序继续进行,当然也可以使用Python自带的设置函数。这里只介绍系统变量的方法。根据它的提 阅读全文
posted @ 2013-05-18 16:42 createMoMo 阅读(1778) 评论(0) 推荐(0)
摘要:一些前提数据:tokens = ['I', 'shot', 'an', 'elephant', 'in', 'my', 'pajamas']tokens为将要研究的一句英文句子。index={(DeT, N): NP, (Det, N, PP): NP, (NP, VP): S, (P, NP): PP, (V, NP): VP, (VP, PP): VP, ('I',): NP, ('an',): Det, ('elephant',) 阅读全文
posted @ 2013-05-16 15:51 createMoMo 阅读(525) 评论(0) 推荐(0)
摘要:Traceback (most recent call last):File "<pyshell#155>", line 3, in <module>print nltk.sem.show_raw_rtuple(rel,Icon=True,rcon=True)AttributeError: 'module' object has no attribute 'show_raw_rtuple'在7.6关系抽取中,有这样一段代码>>>IN = re.compile(r'.*\bin\b(?!\b.+ 阅读全文
posted @ 2013-05-15 16:32 createMoMo 阅读(903) 评论(0) 推荐(0)
摘要:元字符描述\将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“\n”匹配字符“n”。“\\n”匹配一个换行符。序列“\\”匹配“\”而“\(”则匹配“(”。^匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。$匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。*匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等价于{0,}。+匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo” 阅读全文
posted @ 2013-05-15 15:47 createMoMo 阅读(299) 评论(0) 推荐(0)
摘要:在学到“训练基于分类器的分块器”这一小节的时候,在测试代码之后遇到了问题。class ConsecutiveNPChunkTagger(nltk.TaggerI): def __init__(self, train_sents): train_set = [] for tagged_sent in train_sents: untagged_sent = nltk.tag.untag(tagged_sent) history = [] for i, (word, tag) in enumerat... 阅读全文
posted @ 2013-05-15 10:26 createMoMo 阅读(1914) 评论(0) 推荐(0)
摘要:【词义消歧】在词义消歧中,我们要算出特定上下文中词被赋予的是哪个意思。自动消除歧义需要使用上下文,利用相邻词汇有相近含义这样一个简单的事实。【指代消解】解决“谁对谁做了什么”,即监测主语和动词的宾语。确定带刺或名词短语指的是什么,处理这个问题的技术包括指代消解。还包括语义角色标注,确定名词短语与动词相关联。【自动生成语言】自动生成语言有自动问答和机器翻译。【机器翻译】机器翻译是苦难年的,因为一个给定的词可能有几种不同的解释(取决于它的意思),也因为必须改变次序才能与目标语言的语法结构保持一致。今天,这些困难遇到新情况,从新闻和政府网站发布的两种或者两种以上的语言文档中可以收集到大量的相似文本, 阅读全文
posted @ 2013-05-14 19:29 createMoMo 阅读(436) 评论(0) 推荐(0)
摘要:【条件】-常用句型 [w for w in text if condition]-常用的比较运算符s.startswith(t)测试s是否以t开头s.endswith(t)测试s是否以t结尾t in s测试s是否包含ts.islower()测试s中所有字符是否都是小写字母s.isupper()测试s中所有字符是否都是大写字母s.isalpha()测试s中所有字符是否都是字母s.isalnum()测试s中所有字符是否都是字母或者数字s.isdigit()测试s中所有字符是否都是数字s.istitle()测试s中是否首字母大写【条件结构】for token in sent1:if token.is 阅读全文
posted @ 2013-05-14 19:28 createMoMo 阅读(249) 评论(0) 推荐(0)
摘要:【频率分布】目的:想通过找到一本书中使用最频繁的词汇,分析这本书的主题和风格。频率分布:告诉我们每个词汇出现的频率。分析高频词-使用FreqDist寻找《白鲸记》中最常见的50个词fdist1=FreqDist(text1)vocabulary1=fdist.keys()//所有的词汇vocabulary1[:50]//前50个出现频率最高的词汇fdist1['whale'](906)//出现的次数-累积频率图fdist1.plot(50,cumulative=True)-在高频词汇中,有很多无用的词汇,称作管道英语。分析低频词-只出现了一次的词(hapaxes)fdist1. 阅读全文
posted @ 2013-05-14 19:27 createMoMo 阅读(910) 评论(0) 推荐(0)
摘要:链表-sent1=['Call','me','Ishmael','.']这个方括号内的东西在Python中叫做链表(list,也叫做列表),他就是我们存储文本的方式。我们可以对链表使用加法运算,创造一个新的链表。也可以对链表进行追加操作。sent1.append("Some")索引列表-使用数字位置索引text4[173]-使用index,返回第一次出现的索引。text4.index('awaken')-切片:子链表。从大文本中任意抽取语言片段,术语叫做切片。text5[16715:16735] 阅读全文
posted @ 2013-05-14 19:26 createMoMo 阅读(513) 评论(0) 推荐(0)
摘要:【前言】自然语言:日常交流使用的语言NLP:Natural Language Processing【第1章 语言处理与Python】1.1语言计算:文本和单词基本入门-想要获得我们期望的小数除法,要输入from __future__ import division-下载NLTK数据包import nltknltk.download()-加载要用的文本from nltk.book import *搜索文本-concordance词汇索引,会显示词汇所处的上下文text1.concordance("monstrous")-similar,查找还有哪些词会出现在相似的上下文中te 阅读全文
posted @ 2013-05-14 19:24 createMoMo 阅读(805) 评论(3) 推荐(2)
摘要://根据标记,进行分割操作、可以是分句或者分词def segment(text, segs): words= [] last = 0 for i in range(len(segs)): if segs[i] =='1': words.append(text[last:i+1]) last = i+1 words.append(text[last:]) return words//计算得分值def evaluate(text, segs): words= segment(text, segs) text_siz... 阅读全文
posted @ 2013-05-14 18:55 createMoMo 阅读(1873) 评论(0) 推荐(0)