`

[转]网页正文抽取中的网页编码字符集自动识别最佳方案

阅读更多

转自:http://www.cnblogs.com/lersh/archive/2008/07/09/1238799.html 

《比IE准确率更高的自动字符集检测类 UniversalCharDet 》

        一是网页或服务器直接报告浏览器,这个页面用的是什么编码。比如HTTP头的content-type属性,页面的charset属性。这个比较容易实现,只要检测这些属性就能知道用的是什么编码。

        二是浏览器自动猜测。这个就类似人工智能了。比如有些网页没有写charset属性,那么我们看到页面显示乱码时,就会手动去选择页面编码,发现是乱码,就再换一个,直到显示正常为止。

        今天这篇文章要说的就是第二个方法,用程序实现自动猜测页面或文件使用的字符集。  具体的原理就是基于统计学的字符特征分析,统计哪些字符是最常见的字符。这个工作Mozilla有专门的文章《A composite approach to language/encoding detection》说明。  好了,具体的代码其实Mozilla已经用C++实现了,名字就叫UniversalCharDet,但是我翻遍了Internet也找不到.NET的实现类库,只有Google Code上有Java的翻译代码。没办法,自己翻译成C#的代码吧。
        C#实现的源代码:http://code.google.com/p/nuniversalchardet/ 

        PS1.顺便说一下标题,为什么叫比IE更准确,那是因为IE浏览器也自带字符集猜测功能,也有人实现了通过调用IE的接口来猜测字符集的功能类库(http://www.codeproject.com/KB/recipes/DetectEncoding.aspx),不过我试过,这个接口的准确率也不高,成功猜测几率远低于UniversalCharDet。

        PS2.网上流传比较多的是Nchardet,这个是基于mozilla的老版本字符集猜测类chardet的C#实现。准确率也比较低,大致和IE的接口成功率差不多。

        PS3.参考资料

juniversalchardet:http://code.google.com/p/juniversalchardet/ (java版代码在BIG5Prober和GB18030Prober类中有BUG,C#版已经修正)

原理参考: http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html

 

java调用例:juniversalchardet-1.0.3.jar

        private String universalCharDet(byte[] contentBinary) {

String encoding = null;

// (1)

UniversalDetector detector = new UniversalDetector(null);

 

// (2)

detector.handleData(contentBinary, 0, contentBinary.length);

 

// (3)

detector.dataEnd();

 

// (4)

if (StringUtils.isNotEmpty(detector.getDetectedCharset())) {

encoding=detector.getDetectedCharset();

logger.info("get page encodeing by UniversalCharDet "+encoding);

 

// (5)

detector.reset();

 

return encoding;

}

分享到:
评论

相关推荐

    中文网页文本抽取源程序

    3. 中文字符处理:考虑到中文字符集(GB2312、GBK、UTF-8等)的多样性,源码可能包含了中文编码的识别和转换算法,以确保正确地处理各种中文网页。 4. 文本清洗:去除HTML标签、特殊字符、无意义的空格和换行,使...

    从源代码中抽取中文字符串的工具的源代码

    "中文字符串"在软件本地化中具有特殊性,因为中文是一种复杂的字符集,包括汉字、标点符号和组合字符。处理中文字符串时,需要考虑编码问题(如UTF-8、GBK等),以及确保在各种操作系统和设备上显示正常。此外,中文...

    OCR字符识别源代码

    OCR(Optical Character Recognition,光学字符识别)技术是一种将图像中的文字转换为机器编码文本的计算机视觉技术。在本主题中,"OCR字符识别源代码"着重关注的是用于识别数字和英文字符的程序代码,这在诸如车牌...

    文件编码识别工具源码(从firefox源码中提取)

    Mozilla Firefox作为一款全球化的浏览器,其源码中的编码识别工具必定经过精心设计,能够处理各种复杂情况,确保用户无论在何种语言环境下都能正常浏览网页。因此,研究这个源码可以为开发者提供宝贵的编码处理经验...

    行业分类-设备装置-手写字符识别方法和系统.zip

    9. **多语言识别**:除了单一语言的手写字符识别,系统可能还需要处理多种语言,这就需要更复杂的模型来处理各种字符集和书写规则。 10. **实时应用与挑战**:手写字符识别在实际应用中面临着速度、准确性、书写...

    NLP,自然语言处理,特殊字符集

    在NLP中,特殊字符集的处理是一个关键环节,因为这些字符往往对文本分析、语义理解以及信息抽取等任务产生重要影响。 特殊字符包括但不限于标点符号、数字、符号、非ASCII字符、特殊格式字符等。这些字符在文本中起...

    Python源码自动办公-04 快速提取一串字符中的中文.rar

    Python支持Unicode字符集,这意味着它可以处理包括中文在内的各种语言字符。中文字符在Unicode编码中通常由两个或四个字节表示,这取决于所使用的编码方式(如UTF-8或GB2312)。 在Python中,可以使用正则表达式库`...

    C#中Tesseract-OCR的使用,可识别中英日韩所有语言

    通过结合图像处理技术和自然语言处理技术,我们可以构建更复杂的解决方案,例如自动抽取发票信息、识别身份证号码等。 总之,Tesseract OCR为C#开发者提供了强大的文本识别能力,它不仅支持多种语言,而且具备高度...

    Python自动办公实例-快速提取一串字符中的中文.zip

    在本实例中,"Python自动办公实例-快速提取一串字符中的中文.zip"是一个压缩包,其中包含了关于如何使用Python语言在日常办公环境中快速提取字符串中中文字符的教程。这个实例可能适合那些需要处理大量文本数据,...

    命名实体识别one-hot实现

    命名实体识别(Named Entity Recognition, NER)是自然语言处理中的一个重要任务,它涉及到识别文本中具有特定意义的实体,如人名、地名、组织名等。在知识工程领域,NER是构建知识图谱、信息抽取和问答系统的基础。...

    图像识别技术综述.pdf

    图像识别技术是现代信息技术的重要组成部分,它涉及到计算机视觉、机器学习和模式识别等多个...随着技术的进步,图像识别已广泛应用于人脸识别、指纹识别、字符识别等领域,极大地提升了信息处理的效率和智能化水平。

    SEU 知识抽取-关系抽取a1

    关系抽取是自然语言处理中的一个重要领域,主要涉及从文本中识别和提取实体之间的语义关系。这一过程旨在理解和解析文本中的深层结构,从而揭示出实体(如人、地点、时间等)之间的联系,这些联系构成了文本的意义...

    美加新闻聚合系统3.0

    自动识别编码:支持ANSI、EUC_JP、UTF-8、Big5等多种字符集编码的自动识别。 自动抽取新闻:无需分析来源的网页编写特点,支持自动分析来源网页,自动抽取新闻正文。 自动翻译:全自动将外文翻译成中文,从而实现...

    基于python中文命名实体识别与线性回归的刑期预测方法

    【作品名称】:基于中文命名实体识别与线性回归的刑期预测...根据抽取出的伤情,由于一则犯罪事实中可能有多人受伤,则采用类似one-hot编码方式进行编码 之后利用传统线性回归模型,测试加权和未加权方法进行回归预测

    美加新闻聚合系统(经典版)

    自动识别编码:支持ANSI、EUC_JP、UTF-8、Big5等多种字符集编码的自动识别。 自动抽取新闻:无需分析来源的网页编写特点,支持自动分析来源网页,自动抽取新闻正文。 自动翻译:全自动将外文翻译成中文,从而实现...

    精品--汉字字符特征提取器 (featurizer),提取汉字的特征(发音特征、字形特征)用做深度学习的特征 |.zip

    汉字字符特征提取器是一款专为深度学习设计的工具,它主要功能是提取汉字的发音特征和字形特征,以便在机器学习模型中作为...在实际应用中,我们需要根据具体任务和数据集来调整和优化特征提取的过程,以达到最佳效果。

    美加新闻聚合系统(长尾词SEO版) v4.0.zip

    自动识别编码:支持ANSI、EUC_JP、UTF-8、Big5等多种字符集编码的自动识别。 自动抽取新闻:无需分析来源的网页编写特点,支持自动分析来源网页,自动抽取新闻正文。 自动翻译:全自动将外文翻译成中文,从而...

    美加新闻聚合系统源码(经典兼容版) v3.6.rar

     自动识别编码:支持ANSI、EUC_JP、UTF-8、Big5等多种字符集编码的自动识别。  自动抽取新闻:无需分析来源的网页编写特点,支持自动分析来源网页,自动抽取新闻正文。  自动翻译:全自动将外文翻译成中文,...

Global site tag (gtag.js) - Google Analytics