Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python NLTK西班牙语标签效果真的很差吗?_Python_Nltk - Fatal编程技术网

Python NLTK西班牙语标签效果真的很差吗?

Python NLTK西班牙语标签效果真的很差吗?,python,nltk,Python,Nltk,我正在尝试为西班牙语创建一个tagger性能比较。我当前的脚本是一个脚本的修改版本,尽管我尝试了另一个版本,结果非常相似 我正在使用cess_esp语料库,并为该语料库创建了一个Unigram、Bigram、Trigram和Brill标记器,使用标记句对每个标记器进行训练 我很担心二元、三元标记器的性能…从结果来看,它们似乎根本不起作用 例如,下面是我的脚本的一些输出: *************** START TAGGING FOR LINE 6 **********************

我正在尝试为西班牙语创建一个tagger性能比较。我当前的脚本是一个脚本的修改版本,尽管我尝试了另一个版本,结果非常相似

我正在使用cess_esp语料库,并为该语料库创建了一个Unigram、Bigram、Trigram和Brill标记器,使用标记句对每个标记器进行训练

我很担心二元、三元标记器的性能…从结果来看,它们似乎根本不起作用

例如,下面是我的脚本的一些输出:

*************** START TAGGING FOR LINE 6 ****************************************************************************************************************************************

Current line contents before tagging-> mejor ve a la sucursal de Juan Pablo II es la que menos gente tiene y no te tardas nada

Unigram tagger-> [('@yadimota', None), ('@ContactoBanamex', None), ('mejor', 'aq0cs0'), ('ve', 'vmip3s0'), ('a', 'sps00'), ('la', 'da0fs0'), ('sucursal', 'ncfs000'), ('de', 'sps00'), ('Juan', 'np0000p'), ('Pablo', None), ('II', None), ('es', 'vsip3s0'), ('la', 'da0fs0'), ('que', 'pr0cn000'), ('menos', 'rg'), ('gente', 'ncfs000'), ('tiene', 'vmip3s0'), ('y', 'cc'), ('no', 'rn'), ('te', 'pp2cs000'), ('tardas', None), ('nada', 'pi0cs000')]

Bigram tagger-> [('@yadimota', None), ('@ContactoBanamex', None), ('mejor', None), ('ve', None), ('a', None), ('la', None), ('sucursal', None), ('de', None), ('Juan', None), ('Pablo', None), ('II', None), ('es', None), ('la', None), ('que', None), ('menos', None), ('gente', None), ('tiene', None), ('y', None), ('no', None), ('te', None), ('tardas', None), ('nada', None)]

Trigram tagger-> [('@yadimota', None), ('@ContactoBanamex', None), ('mejor', None), ('ve', None), ('a', None), ('la', None), ('sucursal', None), ('de', None), ('Juan', None), ('Pablo', None), ('II', None), ('es', None), ('la', None), ('que', None), ('menos', None), ('gente', None), ('tiene', None), ('y', None), ('no', None), ('te', None), ('tardas', None), ('nada', None)]
****************************************************************************************************************************************

*************** START TAGGING FOR LINE 7 ****************************************************************************************************************************************

Current line contents before tagging-> He levantado ya varios reporte pero no resuelven nada

Unigram tagger-> [('He', 'vaip1s0'), ('levantado', 'vmp00sm'), ('ya', 'rg'), ('varios', 'di0mp0'), ('reporte', 'vmsp1s0'), ('pero', 'cc'), ('no', 'rn'), ('resuelven', None), ('nada', 'pi0cs000')]

Bigram tagger-> [('He', None), ('levantado', None), ('ya', None), ('varios', None), ('reporte', None), ('pero', None), ('no', None), ('resuelven', None), ('nada', None)]

Trigram tagger-> [('He', None), ('levantado', None), ('ya', None), ('varios', None), ('reporte', None), ('pero', None), ('no', None), ('resuelven', None), ('nada', None)]

*************** START TAGGING FOR LINE 8 ****************************************************************************************************************************************

Current line contents before tagging-> Es lamentable el servicio que brindan

Unigram tagger-> [('@ContactoBanamex', None), ('Es', 'vsip3s0'), ('lamentable', 'aq0cs0'), ('el', 'da0ms0'), ('servicio', 'ncms000'), ('que', 'pr0cn000'), ('brindan', None)]

Bigram tagger-> [('@ContactoBanamex', None), ('Es', None), ('lamentable', None), ('el', None), ('servicio', None), ('que', None), ('brindan', None)]

Trigram tagger-> [('@ContactoBanamex', None), ('Es', None), ('lamentable', None), ('el', None), ('servicio', None), ('que', None), ('brindan', None)]
现在,二元图和三元图被训练为指示链接,顺便说一句,这是NLTK书中描述的更直接的方法:

from nltk.corpus import cess_esp as cess
from nltk import BigramTagger as bt
from nltk import TrigramTagger as tt
cess_sents = cess.tagged_sents()
# Training BigramTagger.
bi_tag = bt(cess_sents)
#Training TrigramTagger
tri_tag = tt(cess_sents)
知道我是不是遗漏了什么吗?难道二元图和三元图不应该比一元图表现更好吗?我是否应该始终为二元和三元使用回退标记器

谢谢! Alejandro

创建意大利面标记器()是为了简单地指导如何使用NLTK语料库和标记模块轻松创建可伸缩标记器

正如网站所说,这并不是一个最先进的系统。建议使用最先进的标记器,如。如果您需要,我很乐意用python为Freeling编写一个合适的包装器类

回到您的问题,正如Francis所暗示的(),首先阅读教程,然后您将看到
backoff
参数可能会解决您的问题


免责声明:在我看来,雅各布·帕金斯(Jacob Perkins)关于NLTK词性标注的教程博客文章可能是更好的在线资源之一。他首先构建一个简单的回退ngram标记器,然后查看添加正则表达式和基于词缀的标记,然后是Brill标记,然后是完全基于分类器的标记。这些帖子清晰易懂,并包含了一些有用的性能比较


从这里开始,一直到第4部分:

你好,阿尔瓦斯,是的,谢谢你写这篇文章。如果它使用unigram和bigram,为什么称之为意大利面标签?我已经关注了和的链接。实际上,我已经修改了您的脚本,将unigram的bigram backoff tagger和trigram的bigram backoff tagger包括在内,结果得到了改进。我还使用了Brill tagger和unigram作为培训师,似乎很有效。我已经看过Freeling和TreeTagger,但因为它们不是Python,所以我放弃了它们,如果你有Python中Freeling的包装器,那就太好了!正确地查看代码,它使用pickle和mwe标记实现了一些技巧。对于使用NLTK的可伸缩标记器来说,这只是一个免费的教程。有几种freeling包装纸。如果我有空,我会写一个=)你好,这里似乎有一个端口…我会检查它,这似乎是正确的地方,虽然。。。