stroke-seq_MB icon indicating copy to clipboard operation
stroke-seq_MB copied to clipboard

请教脚本用法

Open chzhsh opened this issue 3 years ago • 3 comments

发现在小狼毫部署时有很多重复写入错误,考虑应该是词库里的问题,又不知道“辅助程序Python3脚本”里的脚本怎么用,能否麻烦你指导一下怎么用?能否附上示例文件?

chzhsh avatar Apr 03 '21 06:04 chzhsh

发现在小狼毫部署时有很多重复写入错误,考虑应该是词库里的问题,又不知道“辅助程序Python3脚本”里的脚本怎么用,能否麻烦你指导一下怎么用?能否附上示例文件?

Python3脚本主要是用于筛选词库、生成编码、剔除不良词汇等功能。不能直接用于 Rime 本身。 你说的“很多重复写入错误”是指什么?

如果是指一些罕见词汇干扰了常见词汇的排序,例如,97.3797 有两个词:手笔、毛笔。 那么第一步可以用“清理特定词汇.py”来剔除“手笔”这个词(文件里有使用说明), 然后第二步再重新做成 Rime 字典(加上 Rime 规定的文件头)。 对于不熟悉 Rime 的初学者来说,这二个步骤比较麻烦,还不如直接在字典文件里查找不想要的词,手工删除。

YQ-YSY avatar Apr 03 '21 15:04 YQ-YSY

感谢回复,重复写入错误提示主要是字词和编码重复但词频不重复的问题: 买 544134 670 买 544134 550 这里小狼毫错误日志就会记录下这条是重复编码错误。 Python3脚本我这里没有运行成功 辅助程序Python3脚本\按行列提取词库.py", line 11, in readfile = open(sys.argv[1]).readlines() IndexError: list index out of range 脚本里的第一第二个文件怎么指定的? #此文件是 python3 脚本,用于排除原词库已有的字词,或者黑名单。用python字典的方式,速度特快,适合百万千万以上级别的词库比较。 #从第二个文件里的提取词组,与第一个文件的提取的关键字(字典)比较,如果不重复,则写入C文件。 #注意所有文件都应保存成utf-8的文本文件,末尾不要有空行。

fa=open(sys.argv[1]).readlines() # 黑名单 fb=open(sys.argv[2]).readlines() # 待清理的文件 outfile = open(sys.argv[2]+"-已清理.txt","w") # 输出已清理的文件

chzhsh avatar Apr 04 '21 08:04 chzhsh

感谢回复,重复写入错误提示主要是字词和编码重复但词频不重复的问题: 买 544134 670 买 544134 550 这里小狼毫错误日志就会记录下这条是重复编码错误。

——这不是“重复编码错误”,而是故意这样做的。 Rime 有自动排除重码的功能,但这恰恰不是我想要的。 对,我就是需要这样的“故意重码”。

“单手笔顺输入法”包含有三种编码: “买”笔顺码:544134,词频以 550 为起始。 “买”六全码:544134,词频以 670 为起始。 “买”精简码:544,词频以 800 为起始。

“买”这个字,都是由单一笔画组成,所以就没用上“偏旁部首代码表”里的任何一个代码, 而且,“买”这个字又刚巧是六个笔画,因此“买”的“六全码”就与“笔顺码”完全相同。

——编码重复,但词频不重复,为什么还要放在同一个码表文件里? 这是为了:在未来的某一天, 如果有程序员按我的“悬浮栏功能设计说明”开发专用的“单手笔顺输入法”软件程序时, 通过码表里的预设词频,就能分辨出“哪个是笔顺码、哪个是六全码、哪个是精简码”; 数据库里就不需要再额外增加一个字段“用来表明属于哪个编码,节省了数据量。

并且,我在“悬浮栏功能设计说明”中已经表明: 在“提示栏”里用不同的颜色显示“这是笔顺码、这是六全码、这是精简码”; 用户就能一目了然,知道“买”字的“笔顺码”和“六全码”是相同的。

假设有十几个字与“买”字的“六全码”相同,但“笔顺码”不同, 用户打字时,翻页查看,他就翻过了“六全码”的“买”字,到下一页去了。 翻查完了这十几个字的“六全码”,用户都不满意,又想回头打出这个“买”字, 如果同一个码表文件里只有一个编码,这时他就只能又翻回去,按上下键来重新选择,很麻烦。

现在,三种编码放在同一个码表文件里,编码重复也不剔除,好处就来了: 三种编码是按词频排列的,精简码排在最前,六全码第二,笔顺码最后。 翻查完了这十几个字的“六全码”,用户会惊喜地发现,他想要的“买”字,作为“笔顺码”又出现了! 这就节省了回头翻页的麻烦,加快了打字和检索的速度。

不过,从我自己使用近一年的情况看,上述情况几乎不可能出现。 因为“笔顺输入”的天然优势就是重码极少! 而且“精简码”和“六全码”的词频设置,又把极少数的重码分开了,避免了在候选栏里重叠出现。 也就是说,本来是重码的几个字,通过多打一码或少打一码,都能处于默认的首选字,

Python3脚本我这里没有运行成功 辅助程序Python3脚本\按行列提取词库.py", line 11, in readfile = open(sys.argv[1]).readlines() IndexError: list index out of range 脚本里的第一第二个文件怎么指定的? fa=open(sys.argv[1]).readlines() # 黑名单 fb=open(sys.argv[2]).readlines() # 待清理的文件 outfile = open(sys.argv[2]+"-已清理.txt","w") # 输出已清理的文件

注意: 你这里的错误提示是运行“按行列提取词库.py”出现的错误提示, 你给出的脚本代码却是“清理特定词汇.py”里的代码, 这是两个不同的python3脚本,不要弄混了。

运行“按行列提取词库.py”脚本的正确命令应该是: python3 按行列提取词库.py 网络词库文件.txt 常见错别字词大全.txt 运行的结果将得到一个新文件: 网络词库文件-已提取..txt

运行“清理特定词汇.py”脚本的正确命令应该是: python3 清理特定词汇.py 常见错别字词大全.txt 我自己的词库文件.txt 运行的结果将得到一个新文件:我自己的词库文件-已清理..txt

其中“常见错别字词大全.txt”在脚本文件夹里已经包含有,就是该脚本里所说的“黑名单”文件。 如果你不想做任何的“黑名单”排除工作,那么可以新建一个只有英文字母的文件作为“黑名单”文件即可。 但还是建议尽量排除“错别字、恶俗词汇、黑名单”,自觉维护语言环境的良性发展。

YQ-YSY avatar Apr 04 '21 09:04 YQ-YSY