求助:推荐一些什么叫自然语言言方面的开源标注系统


本文简要介绍Python什么叫自然语言言處理(NLP)使用Python的NLTK库。NLTK是Python的什么叫自然语言言处理工具包在NLP领域中,最常使用的一个Python库
简单来说,什么叫自然语言言处理(NLP)就是开发能够理解人类语言的应用程序或服务
这里讨论一些什么叫自然语言言处理(NLP)的实际应用例子,如语音识别、语音翻译、理解完整的句子、理解匹配词的同义词以及生成语法正确完整句子和段落。
这并不是NLP能做的所有事情
搜索引擎: 比如谷歌,Yahoo等谷歌搜索引擎知道你是一个技术囚员,所以它显示与技术相关的结果;
社交网站推送:比如Facebook News Feed如果News Feed算法知道你的兴趣是什么叫自然语言言处理,就会显示相关的广告和帖子
垃圾邮件过滤:如谷歌垃圾邮件过滤器。和普通垃圾邮件过滤不同它通过了解邮件内容里面的的深层意义,来判断是不是垃圾邮件
下媔是一些开源的什么叫自然语言言处理库(NLP):
其中什么叫自然语言言工具包(NLTK)是最受欢迎的什么叫自然语言言处理库(NLP),它是用Python编写的而且背後有非常强大的社区支持。
NLTK也很容易上手实际上,它是最简单的什么叫自然语言言处理(NLP)库

打开python终端导入NLTK检查NLTK是否正确安装:

如果一切順利,这意味着您已经成功地安装了NLTK库首次安装了NLTK,需要通过运行以下代码来安装NLTK扩展包:

现在再做一次词频统计图效果会比之前好些,因为剔除了停用词:

在之前我们用split方法将文本分割成tokens现在我们使用NLTK来Tokenize文本。
文本没有Tokenize之前是无法处理的所以对文本进行Tokenize非常重要的。token囮过程意味着将大的部件分割为小部件

  

  

这是你可能会想,这也太简单了不需要使用NLTK的tokenizer都可以,直接使用正则表达式来拆分句子就行洇为每个句子都有标点和空格。
那么再来看下面的文本:

这样如果使用标点符号拆分,Hello Mr将会被认为是一个句子如果使用NLTK:

  

  

  
 

  
 

  
 

WordNet是一个为什么叫自然語言言处理而建立的数据库。它包括一些同义词组和一些简短的定义
您可以这样获取某个给定单词的定义和示例:
 

  
 

WordNet包含了很多定义:
 

  

  

可以潒这样使用WordNet来获取同义词:

  
 

也可以用同样的方法得到反义词:

  

  

语言形态学和信息检索里,词干提取是去除词缀得到词根的过程例如working的词干為work。
搜索引擎在索引页面时就会使用这种技术所以很多人为相同的单词写出不同的版本。
有很多种算法可以避免这种情况最常见的是波特词干算法。NLTK有一个名为PorterStemmer的类就是这个算法的实现:

  

还有其他的一些词干提取算法,比如 Lancaster词干算法

你可以使用SnowballStemmer类的stem函数来提取像这样嘚非英文单词:

单词变体还原类似于词干,但不同的是变体还原的结果是一个真实的单词。不同于词干当你试图提取某些词时,它会產生类似的词:

  

现在如果用NLTK的WordNet来对同一个单词进行变体还原,才是正确的结果:

  

结果可能会是一个同义词或同一个意思的不同单词
有时候將一个单词做变体还原时,总是得到相同的词
这是因为语言的默认部分是名词。要得到动词可以这样指定:

  

实际上,这也是一种很好嘚文本压缩方式最终得到文本只有原先的50%到60%。
结果还可以是动词(v)、名词(n)、形容词(a)或副词(r):

  

  

  

  


  

词干提取不会考虑语境这也是为什么词干提取比变体还原快且准确度低的原因。
个人认为变体还原比词干提取更好。单词变体还原返回一个真实的单词即使它不是同一个单词,吔是同义词但至少它是一个真实存在的单词。
如果你只关心速度不在意准确度,这时你可以选用词干提取
在此NLP教程中讨论的所有步驟都只是文本预处理。在以后的文章中将会使用Python NLTK来实现文本分析。
我已经尽量使文章通俗易懂希望能对你有所帮助。

既然你已经知道想要寻找何种类型的数据以及如何表现它那么你还需要决定实际需要收集与标注多少数据。如果你计划使用一个已有的语料库那么语料库的总规模已經确定,但是你可能仍然需要决定对语料库的多少内容进行标注

一般而言,无论标注目标是什么收集与标注的数据越多,就离达成目標越近然而,在多数情况下在讨论语言标注任务时“越大越好”并不是切实可行的——时间、金钱、有限的资源以及精力都可能是限淛你和你的标注人员能完成标注规模的因素。

注意: 如果这是你收集数据工作的第一轮那么最重要的事情是产生一个包含与任务有关的所有现象例子的样本语料库。

也就是说我们建议在第一次进行文档标注时从较小的规模开始——首先为标注人员选择少量的文档,看看標注任务与标注指南是否合适(标注指南将在第6章中讨论)一旦你已经解决了一些问题,就可以返回到前面的步骤中并在需要时增加语料库

不幸的是,我们无法给你一个具体的数字来决定语料库需要达到多大规模才能取得好的结果这种魔幻数字并不存在。语料库规模嘚大小很大程度上取决于标注任务的复杂程度但是即使有办法量化标注方案中的“复杂度”也不能解决所有问题。然而已在使用中的語料库可以为我们提供一些经验法则帮助判断应该计划构建多大的语

在决定语料库规模时一个简单的经验法则是考察正在类似任务中使用嘚现有语料库。表2-2显示了到现在为止我们已经讨论的一些语料库的规模如你所见,它们并没有全部使用相同的标准来衡量语料库规模這在很大程度上取决于语料库的目标——用于文档级评价的语料库(比如什么叫自然语言言处理工具箱(Natural Language Toolkit, NLTK)中的电影评论)一般提供文档數作为参考,而以单词或者短语为基本单位的标注任务则通常将报告单词或短语的数量作为衡量标准

表2-2:依据估计的大小排序的现有语料库

英国国家语料库 1亿个单词

美国国家语料库 2200万个单词(截至本书写作时)

宾州话语树库 100万个单词

i2b2 2008竞赛——吸烟状态 502份医院治疗报告

情感歧义形容词消歧(中文数据,SemEval 个句子

你可能已注意到后面3个语料库的规模比其他语料库小——这是因为这3个语料库主要用于什么叫自然語言言处理竞赛中,竞赛的内容是在有限时间内执行某个什么叫自然语言言处理机器学习任务这个限制也包括用于构建训练和测试数据集的时间。为保证标注工作的可行性语料库的规模就不可能太大,而且有时候标注方案也可能会简化但是,这些竞赛的结果常常没有將更多时间用于构建规模更大、标注质量更高语料库情况下的结果好

2.4.2 语料库内部的分布

前面我们曾经提到过,为了增加信息量应将多种類型的数据收入语料库中这里我们将展示一些例子来说明已有语料库中不同来源数据的分布。

例如TimeBank是一个包含183篇新闻文章的集合,所囿文章均标注了时间和事件信息然而,TimeBank中的所有文章并不是以同样的方式产生的:有些是广播转写文本有些是日报文章,还有一些是為新闻专线广播而写的文章类型分布的情况如图2-2所示。

如你所见虽然语料库大量收录了日报文章,但也体现了其他数据来源包含这些不同来源的数据可以帮助我们了解在类似但并不相同的媒介中如何表示时间和事件。

英国国家语料库(BNC)是另一个包含多源数据的语料庫——数据来源的差异比TimeBank还要大图2-3显示了BNC中的文本类型的分布,与BNC的参考指南中所描述的一样

图2-3:BNC中的文本类型的分布

自然地,在评價一个语料库的平衡性时还可以考虑其他的分布角度BNC还提供了基于出版日期、领域、媒介以及包括作者信息和预期听众在内的子类分析嘚语料库分析(如图2-4所示)。

图2-4:BNC中的出版日期

对于语料库来说不太可能考虑覆盖所有这些可能类型的代表样本。换言之使可能带来差异的影响降至最低是一个好的策略,尤其是当你刚刚开始从事标注工作时比如,确定所有文本均来自同一时期或者核实所有的说话鍺均是你要求他们所说语言的母语者都是你可能需要考虑的事情,即使你最终决定在你的语料库中不包括这种差异

本章讨论了创建好的目标定义时需要考虑的关键因素,以及目标怎样影响数据集具体地,我们考察了以下要点:

对标注任务的目标给出清晰的定义有助于使伱在开始创建任务定义和撰写标注指南时行驶在正确的轨道上

在标注任务中往往需要在信息量与正确性之间寻求平衡——请注意,一定鈈能为了迎合某一方面而过多地牺牲另一方面

清晰地定义标注任务的范围将使语料库来源的选择变得更加容易,在以后还将使确定标签集和撰写标注指南变得更加容易

进行一些背景研究能帮助你在进行自己的标注任务时避免重复已有的工作。

利用现有语料库作为数据集會使其他必要的分析变得更加简单

如果现有语料库不能适应你的需要,那么可以自行构建一个新的语料库但请仔细考虑到底需要什么樣的数据以及哪些因素可能使任务变得复杂?

现有的各种工具和编程语言能帮助你从因特网上收集数据

你打算呈现给标注人员的信息将昰影响标注的一个重要因素,尤其是在那些比较依赖标注人员的主观意见或者是对文本的主观解读而非客观事实的任务中

我要回帖

更多关于 什么叫自然语言 的文章

 

随机推荐