我正在学习使用NLTK的自然语言处理。我遇到了使用PunktSentenceTokenizer
给定代码无法理解其实际用途的代码。代码给出:
import nltk
from nltk.corpus import state_union
from nltk.tokenize import PunktSentenceTokenizer
train_text = state_union.raw("2005-GWBush.txt")
sample_text = state_union.raw("2006-GWBush.txt")
custom_sent_tokenizer = PunktSentenceTokenizer(train_text) #A
tokenized = custom_sent_tokenizer.tokenize(sample_text) #B
def process_content():
try:
for i in tokenized[:5]:
words = nltk.word_tokenize(i)
tagged = nltk.pos_tag(words)
print(tagged)
except Exception as e:
print(str(e))
process_content()
所以,为什么我们要使用PunktSentenceTokenizer。以及标记为A和B的行中发生的情况。我的意思是,有一个训练文本,另一个为示例文本,但是需要两个数据集来获取语音部分标记。
我无法理解的标记为A
和的行B
。
PS:我确实尝试看过NLTK书,但无法理解PunktSentenceTokenizer的真正用途是什么
PunktSentenceTokenizer
是默认句子标记器的抽象类,即sent_tokenize()
NLTK中提供的标记。这是无监督多语言句子边界检测的一种实现(Kiss和Strunk(2005)。请参阅https://github.com/nltk/nltk/blob/develop/nltk/tokenize/
init
.py#L79
给定一个带有多个句子的段落,例如:
>>> from nltk.corpus import state_union
>>> train_text = state_union.raw("2005-GWBush.txt").split('\n')
>>> train_text[11]
u'Two weeks ago, I stood on the steps of this Capitol and renewed the commitment of our nation to the guiding ideal of liberty for all. This evening I will set forth policies to advance that ideal at home and around the world. '
您可以使用sent_tokenize()
:
>>> sent_tokenize(train_text[11])
[u'Two weeks ago, I stood on the steps of this Capitol and renewed the commitment of our nation to the guiding ideal of liberty for all.', u'This evening I will set forth policies to advance that ideal at home and around the world. ']
>>> for sent in sent_tokenize(train_text[11]):
... print sent
... print '--------'
...
Two weeks ago, I stood on the steps of this Capitol and renewed the commitment of our nation to the guiding ideal of liberty for all.
--------
This evening I will set forth policies to advance that ideal at home and around the world.
--------
在sent_tokenize()
使用从预先训练模式nltk_data/tokenizers/punkt/english.pickle
。您还可以指定其他语言,NLTK中经过预先训练的模型的可用语言列表为:
alvas@ubi:~/nltk_data/tokenizers/punkt$ ls
czech.pickle finnish.pickle norwegian.pickle slovene.pickle
danish.pickle french.pickle polish.pickle spanish.pickle
dutch.pickle german.pickle portuguese.pickle swedish.pickle
english.pickle greek.pickle PY3 turkish.pickle
estonian.pickle italian.pickle README
给定另一种语言的文本,请执行以下操作:
>>> german_text = u"Die Orgellandschaft Südniedersachsen umfasst das Gebiet der Landkreise Goslar, Göttingen, Hameln-Pyrmont, Hildesheim, Holzminden, Northeim und Osterode am Harz sowie die Stadt Salzgitter. Über 70 historische Orgeln vom 17. bis 19. Jahrhundert sind in der südniedersächsischen Orgellandschaft vollständig oder in Teilen erhalten. "
>>> for sent in sent_tokenize(german_text, language='german'):
... print sent
... print '---------'
...
Die Orgellandschaft Südniedersachsen umfasst das Gebiet der Landkreise Goslar, Göttingen, Hameln-Pyrmont, Hildesheim, Holzminden, Northeim und Osterode am Harz sowie die Stadt Salzgitter.
---------
Über 70 historische Orgeln vom 17. bis 19. Jahrhundert sind in der südniedersächsischen Orgellandschaft vollständig oder in Teilen erhalten.
---------
要训练自己的punkt模型,请参阅https://github.com/nltk/nltk/blob/develop/nltk/tokenize/punkt.py和nltk
punkt的训练数据格式
本文向大家介绍在python中使用NLTK标记文本,包括了在python中使用NLTK标记文本的使用技巧和注意事项,需要的朋友参考一下 给定一个字符序列和一个定义的文档单元,令牌化就是将其切成碎片(称为令牌)的任务,也许同时丢掉某些字符(例如标点符号)。在nltk和python的上下文中,这仅仅是将每个标记放入列表的过程,因此我们可以遍历一个标记,而不是一次遍历每个字母。 例如,给定输入字符串-
本文向大家介绍在Python中使用NLTK删除停用词,包括了在Python中使用NLTK删除停用词的使用技巧和注意事项,需要的朋友参考一下 当计算机处理自然语言时,某些极端通用的单词似乎在帮助选择符合用户需求的文档方面几乎没有值,因此完全从词汇表中排除了。这些单词称为停用词。 例如,如果您输入的句子为- 停止单词删除后,您将获得输出- NLTK收集了这些停用词,我们可以将其从任何给定的句子中删除。
问题内容: 不久前,SO上有人问如何使用NLTK的wordnet包装器检索给定同义词集的单词列表。这是建议的响应之一: 使用NLTK 3.0运行此代码将产生。 我尝试了每个先前提出的解决方案(上面链接页面上描述的每个解决方案),但是每个都抛出错误。因此,我想问:NLTK 3.0是否可以为同义词集列表打印单词?我将很感谢其他人在这个问题上可以提供的任何建议。 问题答案: WordNet在NLTK 3
问题内容: 我一直在尝试使NLTK(自然语言工具包)在Google App Engine上运行。我遵循的步骤是: 下载安装程序并运行它(.dmg文件,因为我使用的是Mac)。 将nltk文件夹从python site-packages目录中复制出来,并将其作为子文件夹放在我的项目文件夹中。 在包含nltk子文件夹的文件夹中创建一个python模块,并添加以下行: 不幸的是,在启动它之后,我得到了这
问题内容: 作为我的学术项目的一部分,我需要将一堆任意句子解析为一个依赖关系图。经过大量搜索后,我得到了可以使用Malt Parser与其预先训练好的语法分析器解析文本的解决方案。 我已经从http://www.maltparser.org/mco/mco.html下载了预训练模型(engmalt.linear-1.7.mco)。但是我不知道如何使用此语法文件和麦芽解析器(通过麦芽的python接
问题内容: 我正在尝试创建一种类似于英语的小型语言来指定任务。基本思想是将陈述分为动词和名词短语,这些动词应适用于它们。我正在使用nltk,但未获得我希望的结果,例如: 在每种情况下,它都未能意识到第一个单词(选择,移动和复制)被用作动词。我知道我可以创建自定义标签和语法来解决此问题,但是与此同时,当很多此类东西不在我的支持范围内时,我犹豫要重新发明轮子。我特别希望可以同时处理非英语语言的解决方案