GitHub 您所在的位置:网站首页 谷歌是哪国 GitHub

GitHub

2024-07-03 14:36| 来源: 网络整理| 查看: 265

language-distinguish(语言识别language-detect)

根据输入的语言字符串识别是哪个国家的语言,利用了unicode值,谷歌翻译,百度翻译辅助(重复造轮子系列)。

项目说明

本项目主要基于shuyo的开源框架 https://github.com/shuyo/language-detection 和谷歌翻译的语言检测接口完成。由于网上很多开源框架或软件都只能识别一种语言,,并且不能检测出字符串中某些语言的占比和语言支持种类都比较少,而我近来有个需求需要识别包含不同种类的语言和求出它们之间的占比,因此开发出这个功能jar包。

特点:

当前支持同一字符串两种语言的识别,并能求出占比,返回形式:{"lang1":0.09,"lang2":0.91},如果检测不了,则返回{}

支持语言种类多,具体支持的语言种类见下表

会自动过滤掉特殊非语言字符,如:邮箱,链接,数字,换行符,多余的空格等

支持自定义语言库

缺点:

最多只支持两种语言,而且不支持都是字母的多语言识别,例如:法语和英语的混合,这种情况下,会整个字符串进行识别。

如果使用精确识别模式,识别速度上比较慢,如果语言大多是非英语字母,则速度大概是1秒一次。

使用说明

建议使用maven来构建项目

安装依赖或添加jar包 方式一(推荐)

直接使用以下maven依赖

com.github.kanlon language-distinguish 1.1.1 方式二

下载项目目录下的lib包中的所有jar包,将它们加到需要用到的项目中的jar包中。然后就可以创建以下测试类进行测试了。

自定义配置与使用

如果需要自己构造语言库,需要在项目根目录下建一个lang文件夹,并将语言库放到该目录下,否则会默认使用自带的lang语言库。语言库制作参考: https://www.jianshu.com/p/9611a048f970 中的”如何生成Language Profile“

然后就可以调用LanguageDistinguish类中的静态方法getLanguageByString(String str,DetectMode mode)来使用了,会返回语言名称的简写代码,str表示要检测的语言,DetectMode表示识别模式DetectMode.PRECISION表示精确的,不过速度慢,DetectMode.IMPRECISION表示不太精确的,速度快。

代码示例 /** * 测试语言识别 * * @author zhangcanlong * @since 2019/1/28 11:13 */ @Slf4j public class LanguageDistinguishTest { /** * 测试识别 */ @Test public void testDistinguish() { String lang1 = "com.cybozu.labs.langdetect.Detector.getProbabilities"; String lang2 = "尽管每种应用都会有所不同,但是本质上都是相似的,需要比较单独个体的相似性。"; String lang3 = "com.cybozu.labs.langdetect.Detector.getProbabilities尽管每种应用都会有所不同,但是本质上都是相似的,需要比较单独个体的相似性。"; String lang4 = "BTS (방탄소년단) 'Save ME' Official MV\n"; String lang5 = "\"เพลงอื่นๆในอัลบั้ม\n" + "01 Fly : https://www.youtube.com/watch?v=eaIsRux0EUs\n" + "02 Can't (못하겠어) : https://www.youtube.com/watch?v=eduPd3zejwc\n" + "03 See the light (빛이나) : https://www.youtube.com/watch?v=n9O6ZxIiNfo\n" + "04 Fish : https://www.youtube.com/watch?v=q8UdPXzH2qA\n" + "05 Rewind : https://www.youtube.com/watch?v=J9jfoApJous\n" + "06 Beggin on my knees : https://www.youtube.com/watch?v=TOzU28PLjkM\n" + "07 Something good : https://www.youtube.com/watch?v=dtupeRACACc&feature=youtu.be\n" + "\n" + "- - - - - - - - - - - - - - - - - - - - -\n" + "ห้ามรีอัพโหลดและใช้ในเชิงพาณิชย์ [Do not Re-upload & Not for sale]\n" + "- - - - - - - - - - - - - - - - - - - - -\n" + ":: Credit::\n" + "Hangul : music.naver\n" + "Eng trans : KpopViral.com\n" + "Thai lyrics & Trans : BAEBOOIrene\n" + "- - - - - - - - - - - - - - - - - - - - -\n" + "แปลผิดพลาดประการใดขออภัยด้วยนะคะ\n" + "กดไลค์และคอมเมนต์เป็นกำลังใจให้คนทำซับมากมาย\"\n"; String lang6 = "Всем доброго дня! Сегодняшнее видео посвящено автомобилям, которые разгоняется до скорости в 300 и больше! Здесь и Porsche GT2, и Lamborghini Urus и Huracan, Audi R8, Mercedes E63 S, а также Bentley Continental GT! Это уже 3 видео по данной теме, так что если вы не видели первые две подборки, то обязательно посмотрите! Приятного просмотра!\n"; String lang7 = "1--"; String lang8 = ""; log.info("识别1的文本为:{},结果为:{}", lang1, LanguageDistinguish.getLanguageByString(lang1, DetectMode.PRECISION)); log.info("识别2的文本为:{},结果为:{}", lang2, LanguageDistinguish.getLanguageByString(lang2, DetectMode.PRECISION)); log.info("识别3的文本为:{},结果为:{}", lang3, LanguageDistinguish.getLanguageByString(lang3, DetectMode.PRECISION)); log.info("识别4的文本为:{},结果为:{}", lang4, LanguageDistinguish.getLanguageByString(lang4, DetectMode.PRECISION)); log.info("识别5的文本为:{},结果为:{}", lang5, LanguageDistinguish.getLanguageByString(lang5, DetectMode.PRECISION)); log.info("识别6的文本为:{},结果为:{}", lang6, LanguageDistinguish.getLanguageByString(lang6, DetectMode.PRECISION)); //如果检测的字符串不含有特征字符,即识别不了,会返回"{}" log.info("识别7的文本为:{},结果为:{}", lang7, LanguageDistinguish.getLanguageByString(lang7, DetectMode.PRECISION)); //如果检测的字符串为空,或空字符串,则会抛出异常,因此需要自己判空 try { log.info("识别8的文本为:{},结果为:{}", lang8, LanguageDistinguish.getLanguageByString(lang8, DetectMode.PRECISION)); } catch (Exception e) { log.error("这里会抛出空报错!", e); } } }

运行结果



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有