Python 基于NGram的语言检测William B.Cavnar和John M.Trenkle

Python 基于NGram的语言检测William B.Cavnar和John M.Trenkle,python,nlp,nltk,n-gram,Python,Nlp,Nltk,N Gram,我正试图实现威廉·卡夫纳(William B.Cavnar)和约翰·M.特伦克尔(John M.Trenkle)使用 每次我执行它时,它都会输出“English”。所有语言的计算距离始终相同。我无法找出上面代码中的逻辑错误。请帮帮我。与Cavnar&Trenkle代码相比,它看起来像 ngram = ' '.join(t) 应该是 ngram = ''join(t) (没有空格) 我打赌这就是你的统计数据的来源。与Cavnar&Trenkle代码相比,它看起来像 ngram = ' '.jo

我正试图实现威廉·卡夫纳(William B.Cavnar)和约翰·M.特伦克尔(John M.Trenkle)使用


每次我执行它时,它都会输出“English”。所有语言的计算距离始终相同。我无法找出上面代码中的逻辑错误。请帮帮我。

与Cavnar&Trenkle代码相比,它看起来像

ngram = ' '.join(t)
应该是

ngram = ''join(t)
(没有空格)


我打赌这就是你的统计数据的来源。

与Cavnar&Trenkle代码相比,它看起来像

ngram = ' '.join(t)
应该是

ngram = ''join(t)
(没有空格)


我敢打赌这就是你的统计数据的来源。

还是一样。(英语,44578)(法语,44578)(西班牙语,44578)直到今天,语言仍然是英语。('english',44578)('french',44578)('spanish',44578)语言为英语
/langdata/*.dat
中的文件是否实际包含语言数据?如果它们都是空的,或者它们都包含相同的文本,那么就会出现这种行为。是的,它们实际上包含语言ngram统计数据。如果它们是空的,文本的每一个ngram都将被分配一个最大值(未找到)。不同语言的ngram数据?你的程序没有做你认为它会做的事情,所以很明显,你认为你知道的一件事是不正确的。学习理解和调试你的程序。两件事:lang_ng=[ng[0]代表lang_stats中的ng]应该是lang_ng=[ng[0]代表ngram中的ng],如果我们使用word_tokenize,标记化部分工作得更好。我想我的小项目已经完成了。谢谢大家的宝贵建议。
/langdata/*.dat
中的文件是否确实包含语言数据?如果它们都是空的,或者它们都包含相同的文本,那么就会出现这种行为。是的,它们实际上包含语言ngram统计数据。如果它们是空的,文本的每一个ngram都将被分配一个最大值(未找到)。不同语言的ngram数据?你的程序没有做你认为它会做的事情,所以很明显,你认为你知道的一件事是不正确的。学习理解和调试你的程序。两件事:lang_ng=[ng[0]代表lang_stats中的ng]应该是lang_ng=[ng[0]代表ngram中的ng],如果我们使用word_tokenize,标记化部分工作得更好。我想我的小项目已经完成了。谢谢大家提出的宝贵建议。