安装NLTK并将其用于人类语言处理

NLTK代表“自然语言工具包”。 它是一个用于清理和处理人类语言数据的python编程模块。 其丰富的内置工具可帮助我们轻松构建自然语言处理领域(又称NLP)的应用程序。

语料库是以特定语言存在的一组单词,NLTK提供超过50种不同的语料库来处理和提供核心图书馆,如POS标签,语音结尾标记,标记化,语义推理,分类等。以下简要描述NLP中使用的5个主要功能或步骤,可以使用NLTK轻松执行:

  • 语音结尾标签(EOS标签):这涉及到将文本制作成有意义句子的集合。
  • 标记:将句子分解成单词。 它不仅适用于白色空间,而且还可以删除像(。,?,!等)这样的禁用词,它是一个集合,这意味着重复的单词被删除。
  • 语音标签(POS标签)的一部分:标记词表示字的类型。 标签被编码。 名词,过去式动词等,所以每个单词都有一个标签。
  • 分块:使用类似标签分组单词的过程。 分块的结果将是一棵树结构。
  • 提取:一旦数据分块,我们可以只提取名词,或只提取动词等来满足需求。

现在,这可能看起来很酷,但这是可以使用的最好的模块吗? 那么这个答案取决于手头的任务。 一般来说,NLTK很慢,但非常准确。 还有像PsyKit这样的其他模块,它的速度更快,但是在精确度方面有一个权衡。因此,对于准确度超前的应用,NLTK是正确的选择。 这个帖子显示了NLTK如何安装和使用一个例子。

2下载并安装NLTK

可以使用“pip”安装程序轻松安装NLTK。 在安装NLTK之前,我们还要安装numpy。使用以下命令:

sudo pip install -U numpy 
sudo pip install -U nltk

下图显示nltk的执行。 请注意,安装numpy是类似的,但是可能需要更多的时间才能安装,具体取决于系统的处理器。

完成后,您可以通过使用下图中的2个命令来测试是否已正确安装,并确保运行时没有错误。

3安装NLTK数据

一旦您确认已安装nltk,我们将不得不下载并安装NLTK数据。 Nltk数据由语料库和语言中的所有单词以及各种语法语法,玩具语法,训练模型等组成。它们通过应用各种功能帮助用户轻松处理语言。 请注意,安装nltk数据是一个漫长的过程,它涉及下载超过1 GB的数据。 要下载nltk数据,在终端类型“python”中打开python解释器,并键入以下两个命令:

>>> import nltk >>> nltk.download()

应打开一个新窗口,显示nltk下载。 安装在“usr / share / nltk_data”文件夹中。 一旦完成测试,如果已经通过键入命令并获取输出,如下图所示下载。

4使用NLTK的示例

现在我们可以尝试使用NLTK执行的NLP任务的一些示例。 EOS检测,令牌化,POS标签,分块和提取的5个过程如下:

4.1 EOS检测

语言结尾的标签将文本分解成有意义的句子集合。 我们这样做是因为对单个句子的进一步的工作。 以下是EOS检测的示例和输出。

>>> import nltk
>>> text = "Mrs. Hudson made a cup of tea. She is a wonderful woman."
>>> sentences = nltk.tokenize.sent_tokenize(text)
>>> sentences
['Mrs. Hudson made a cup of tea.', 'She is a wonderful woman.']
>>> 

使用nltk的语料库可以在上面看到。 知道“太太” 不是一个句子,而是一个缩写。 因此,它被作为一个句子的一部分而不是一个句子。

4.2令牌化

这个步骤对单个句子进行操作,将它们分成令牌。 所以我们得到一个包含令牌的列表。 下面的例子是上一步的继续。

>>> tokens = [nltk.tokenize.word_tokenize(s) for s in sentences]
>>> tokens
[['Mrs.', 'Hudson', 'made', 'a', 'cup', 'of', 'tea', '.'], ['She', 'is', 'a', 'wonderful', 'woman', '.']]
>>> 

这里我们可以看到,令牌不仅由单词组成,而且还包括句子的结尾。 重要的是要注意,令牌化不仅将句子分解成单词,而且还具有将句子分解成令牌的能力,其中空格不是字符来分隔单词。

4.3 POS标签

POS表示说Discourse音,并且在该步骤中,POS信息被分配给令牌列表中的每个令牌。 这些POS信息中的每一个表示它是什么样的语音。 例如,标签“VBD”表示一种简单的过去时态的动词,“JJ”表示形容词。 此步骤有助于我们在下一步安排或订购这些单词。 下面给出了一个例子。

>>> PosTokens = [nltk.pos_tag(e) for e in tokens]
>>> PosTokens
[[('Mrs.', 'NNP'), ('Hudson', 'NNP'), ('made', 'VBD'), ('a', 'DT'), ('cup', 'NN'), ('of', 'IN'), ('tea', 'NN'), 
('.', '.')], [('She', 'PRP'), ('is', 'VBZ'), ('a', 'DT'), ('wonderful', 'JJ'), ('woman', 'NN'), ('.', '.')]]
>>> 

4.4分块和提取

分块是指基于标签组合复杂标记的过程。 Nltk还允许为分块定义一个自定义语法。 另一方面,提取是指通过现有块并将其标记为命名实体的过程,如人员,组织,位置等示例:

>>> chunks = nltk.ne_chunk_sents(PosTokens)
>>> for each in chunks:
...   print each
... 
(S
  Mrs./NNP
  (PERSON Hudson/NNP)
  made/VBD
  a/DT
  cup/NN
  of/IN
  tea/NN
  ./.)
(S She/PRP is/VBZ a/DT wonderful/JJ woman/NN ./.)
>>> 

我们可以看到,哈德森夫人已经被认定为一个人。 所有这些信息都以树的形式存储。

5结论

从上面给出的样本,我们可以看到我们能够轻松地处理数据。 一旦应用了这五个步骤,我们可以继续应用各种算法来处理/排列数据,并从中提取有用的信息。 可以使用的一个例子是“自动文本摘要”。 总而言之,与其他人相比,Nltk是一个强大的,准确的,有点慢的工具。 它可以用于优先考虑精度的应用。

6官方链接

有关nltk的数百项任务和功能的详细使用信息,请访问其官方网站: http : //www.nltk.org/genindex.html

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏