Ham*_*jan 6 python translation nlp character-encoding
我正在使用Python 3.1,但如果需要我可以降级.
我有一个ASCII文件,其中包含一种用其中一种语言编写的短篇小说,其中的字母表可用上和下ASCII表示.我希望:
1)尽我所能检测编码,获得某种置信度量(根据文件的长度而变化,对吧?)
2)使用一些免费的在线服务或库自动翻译整个事物.
附加问题:如果文本是用一个代表一个字母需要2个或更多字节的语言编写的,并且字节顺序标记不能帮助我?
最后,我如何处理标点符号和misc字符,如空格?它会比一些字母更频繁地出现,对吧?标点符号和字符有时可以混合的事实怎么样?可能有两个逗号表示,两个表示看起来像"a"等等?
是的,我已经阅读了Joel Spolsky关于Unicode的文章.请至少帮助我一些这些项目.
谢谢!
PS这不是一个家庭作业,但它是出于自学目的.我更喜欢使用开源和可读的字母频率库,而不是封闭,高效的字母频率库,但是可以很好地完成工作.
本质上,实现所描述的应用程序需要三个主要任务:
对于 1a,您可能需要查看decodeh.py,除了脚本本身之外,它还提供了许多有关字符集和编码的非常有用的资源。其他答案中提到的CharDet似乎也值得考虑。
一旦知道字符编码,正如您所建议的,您可以通过计算文本的字符频率配置文件并将其与已知频率进行匹配来解决 1b) 问题。虽然简单,但这种方法通常提供不错的精确率,尽管它对于较短的文本和遵循特定模式的文本可能较弱;例如,法语文本中多次引用公制单位,其中字母 M、K 和 C 的比例会异常高。
一种互补且非常相似的方法是使用二元组(两个字母的序列)和三元组(三个字母)以及各种语言的相应频率分布参考表。
其他语言检测方法涉及对文本进行标记,即考虑文本中的单词。NLP 资源包括各种语言中最常用单词的表格。这些词通常是冠词、所有格形容词、副词等。
语言检测的另一种解决方案是依靠在线翻译服务来为我们解决这个问题。重要的是向翻译服务提供其能够理解的字符编码的文本,如果语言可能是多余的。
最后,与许多实际的 NLP 应用程序一样,您可能会决定实施多种解决方案。通过使用策略设计模式,人们可以按特定顺序应用多个过滤器/分类器/步骤,并根据情况在不同点退出该逻辑。例如,如果一个简单的字符/二元组频率将文本与英语匹配(有很小的偏差),人们可能会停在那里。否则,如果猜测的语言是法语或德语,则执行另一次测试,等等。