Open zenglian opened 4 years ago
添加了相关测试,未能重现问题:https://github.com/program-in-chinese/zhconverter/commit/9e98e0ec07491376049253d8a8cff018eb4d483a 如能添加测试重现问题,欢迎提交 pr。
很明显你转反了,应该从繁体到简体。 不过我看这问题很难解决。
?测试里其他用例看了吗?都是这个顺序啊。
或者写个测试用例提个 pr?
很简单
String s1 = 简繁转换类.转换("酒里乾坤大", 简繁转换类.目标.简体);
System.out.println(s1);
//输出酒里干坤大
再来几个例子。但应不仅限于这个“乾”字。
繁体: "description": "--(961-1023)字平仲,华州下(今陕西渭南)人。太平兴国五年(1980)进士。累官至中书侍郎同中书下平章事。二次罢相,封莱国公。乾兴初,为丁谓所,贬雷州司户参军,卒于贬所。有《寇莱公集》。存词五首,以《江南春》较著名。",
简体: "description": "--(961-1023)字平仲,华州下(今陕西渭南)人。太平兴国五年(1980)进士。累官至中书侍郎同中书下平章事。二次罢相,封莱国公。干兴初,为丁谓所,贬雷州司户参军,卒于贬所。有《寇莱公集》。存词五首,以《江南春》较著名。",
繁体: "description": "--字世英,历城(今山东济南)人。以文学著称,与王樵、贾同齐名。官乾宁主簿。有《东皋集》,不传。存词五首。",
简体: "description": "--字世英,历城(今山东济南)人。以文学著称,与王樵、贾同齐名。官干宁主簿。有《东皋集》,不传。存词五首。",
繁体: "description": "--字次仲,南昌(今属江西)人。乾道二年(1166)进士。以词名世,常以俚俗语写男女之情。有《金谷遗音》。",
简体: "description": "--字次仲,南昌(今属江西)人。干道二年(1166)进士。以词名世,常以俚俗语写男女之情。有《金谷遗音》。",
繁体: "name": "曾乾曜",
简体: "name": "曾干曜",
//下面几个是对的
繁体: "池台小雨乾,门巷香轮少。",
简体: "池台小雨干,门巷香轮少。",
繁体: "昭阳殿里春衣就,金缕初乾。",
简体: "昭阳殿里春衣就,金缕初干。",
繁体: "雨打芙蓉泪不乾。",
简体: "雨打芙蓉泪不干。",
繁体: "蜗角虚名,蝇头微利,算来著甚乾忙。",
简体: "蜗角虚名,蝇头微利,算来著甚干忙。",
主要原因是,这个库没有任何分词功能(请见 readme)。因而繁体句子中一旦出现“乾”字,转为简体都会变为“干”。即使将“乾宁”和“乾道“写入内置字典,由于不分词,也不能正确转换。
一个取巧的办法,就是用户自定义一个字典,把比如“乾宁”和“乾道“写入词典,转换时,先检查句子中有没有词典中的词,如果有的话,就只用这个库转换其他部分,保留此词不变。
可以作为配置的一部分(配置文件和api),像“乾坤”可以预配置好,用户可以增减。
是的。不过,个人短期内恐怕难以完成(个人原因)。如果实现了的话,可否分享下代码?
有一点问题:在文本中,例外词可能重复出现多次。 定义例外词的时候不应重复,所以更宜为Set而不是List。
如:
private static List<String> 词典 = Arrays.asList("乾兴", "乾坤", "乾隆", "曾乾曜");
@Test
public void 例外词测试() {
String src = "乾隆年间,乾隆皇帝下江南,碰到一个乾瘦的老头,叫曾乾曜,说:酒里乾坤大。";
String dest = 忽略特殊词(src, 目标.简体);
Assert.assertEquals(src, dest); //正确结果也不应相等
}
结果
Expected :乾隆年间,乾隆皇帝下江南,碰到一个乾瘦的老头,叫曾乾曜,说:酒里乾坤大。
Actual :乾隆年间,干隆皇帝下江南,碰到一个干瘦的老头,叫曾乾曜,说:酒里乾坤大。
这里有一个实战的项目:最全中文古诗词库,其中很多繁体,想转为简体: https://github.com/chinese-poetry/chinese-poetry
如果是古诗词的话,一首中应该重复出现某词的情况应该极少吧?上面代码仅作参考,请自行按需修改?
对于此类问题,有没有解决办法?