小编典典

NLTK使用语料库标记西班牙语单词

python

我正在尝试学习如何使用NLTK标记西班牙语单词。

nltk的书中,使用它们的示例标记英语单词非常容易。因为我是nltk和所有语言处理的新手,所以我对如何进行程序感到很困惑。

我已经下载了cess_esp语料库。有没有办法指定一个语料库nltk.pos_tag。我看了看pos_tag文档,没有发现任何建议。我觉得我缺少一些关键概念。我是否需要在cess_esp语料库中手动标记文本中的单词?(通过手动,我的意思是标记我的情感,然后再次运行语料库)还是我完全偏离了常规。谢谢


阅读 230

收藏
2020-12-20

共1个答案

小编典典

首先,您需要 从语料库中读取带标记的句子。
NLTK提供了一个很好的界面,不用担心来自不同语料库的不同格式。您可以简单地导入语料库,使用语料库对象函数来访问数据。请参阅http://nltk.googlecode.com/svn/trunk/nltk_data/index.xml

然后,您必须 选择标记器的选择并训练标记器 。还有更多花哨的选项,但您可以从N-gram标记器开始。

然后,您可以使用标记器标记所需的句子。这是一个示例代码:

from nltk.corpus import cess_esp as cess
from nltk import UnigramTagger as ut
from nltk import BigramTagger as bt

# Read the corpus into a list, 
# each entry in the list is one sentence.
cess_sents = cess.tagged_sents()

# Train the unigram tagger
uni_tag = ut(cess_sents)

sentence = "Hola , esta foo bar ."

# Tagger reads a list of tokens.
uni_tag.tag(sentence.split(" "))

# Split corpus into training and testing set.
train = int(len(cess_sents)*90/100) # 90%

# Train a bigram tagger with only training data.
bi_tag = bt(cess_sents[:train])

# Evaluates on testing data remaining 10%
bi_tag.evaluate(cess_sents[train+1:])

# Using the tagger.
bi_tag.tag(sentence.split(" "))

在大型语料库上训练标记器可能需要花费大量时间。无需在每次需要时训练标记器,而是将训练有素的标记器保存在文件中以供以后重用是很方便的。

请查看http://nltk.googlecode.com/svn/trunk/doc/book/ch05.html中的“
存储标记” 部分

2020-12-20