关于PQT活动文本提取器以及后期的计划安排

这两天写了一个pqt的文本提取器,狠狠地玩了一把文本内容检索,玩爽了…

平日里很少有这种需求,对于文件操作而言,基本上只是用到"读取"、"创建"、"删除"这种直接作用在整个文件之上的操作,因此,这算是我首次尝试,不过感觉很新鲜。从一开始的文件"乱码",到现在提取到了自己想要的数据,一股成就感油然而生。

image

图1 以十六进制编码的源文件

image

图2 提取出的活动剧情文本

image

图3 活动剧情译文

从整体上来看,文本检索的逻辑,与网络爬虫无太大差异,同样是需要访问目标源,同样需要编写规则定位数据所在位置,并将其提取保存输出,这是基本的运行流程。

但就编写规则来说,我个人觉得文本内容提取难度比网页内容提取难度要大,网页好歹还有个html骨架可供参考,结构层次都很清晰,可以为网络爬虫提供较多的参考点,因此网络爬虫的最大难题是认证,提取规则反而是次要的;反观纯文本的文件,一眼看下去全都是密密麻麻的字符,看到都觉得心累,有时候花了大把时间,也没能看出数据内容的分布的规律。

幸运的是,本次需要的文本内容规律较容易看出...

虽然刚开始编写程序的时候,经历了一些波折,但思路和灵感来了之后,就变得轻松许多,三五下把程序完成了。

程序也不算复杂,只有短短的百十行代码,不过依然存在很多可以优化的地方,如定位的规则太过于单一,存在太多的硬编码,太多的重复逻辑等等。

同时现在这个程序还是有点笨,比如每次要获取新的内容时,需要使用者去观察原文件获取"锚点",并将其交给程序,才能正确提取到数据内容。

就目前来说,程序虽然可用,但并不好用。

看看后续如何改进吧(说不定这只是说说而已...)。

有了这些文本之后,翻译这件事也变得相当简单,只要把文本内容当做参数传给翻译接口,分分钟把译文返回过来…

令人感叹,这样就显得之前一词一句地翻译的我有点傻,耗费了大量的时间精力才能完成的事情,现在交给机器不过是一瞬之间,翻译质量也还好,虽然比不上人工,但还是看得懂的。

我本次使用的是有道的翻译服务。

这也就是说,我之前所做的事,没有任何意义和价值...

不过这样也好,倒不如说正合我意,因为最近都是硬着头皮干翻译这事,一来翻译真的很花时间和精力,二来翻译出来了也基本没人看,根本没什么人在乎,我都快撑不下去了。

现在有了机器作为代替,我也算是从中解放出来了。

而且,相比于翻译这件事,我更喜欢编写程序;现在有了数据源,我可以为每个活动编写一套规则,等开活动的时候,再使用程序将相关的文本提取出来,然后再交给机器翻译。

这意味着我既不用每次都提醒自己录屏,也不用再花上好几个小时一字一词苦逼地翻译了,省时又省力,非常完美,当然了,前提是能把提取程序完成才行。至于翻译质量的问题... 大不了后期我再稍微校正一下。

不过我没想到的是,这个游戏的文案,竟然都是预先下载下好的,以前我也有想到过,因为浏览剧情的时候,确实没看到网络加载的标识,当时觉得文案应该存储在某些配置文件中,如csv、json、config之类的,结果现在是存储在一个.data后缀的文件里(这还是后来通过别人的提醒才得知的),在我的印象中,这类文件一般都是存储与系统相关的内容(如系统日志),因此并没有查看。

这比平日里那些机械性的增删改查代码要好玩得多,同时这也是我的目标之一:把编程应用于工作以外的其他地方。

总之,这个文本提取程序只是目前计划中的一块小拼图,我想要做的是把这些小程序集成一个可以对外提供服务的系统(目前提取文本和翻译程序是分开的),我想过这样的场景:先输入角色名称,再选定活动,最后选择需要的服务(如只需要原文、译文,或者中英),就能得到想要的内容,这样就方便得多。

嗯... 看上去挺遥远的,现在只能慢慢来了。

返回