Skip to content

分句(Segment)

阅读本文大约需要: 3 分钟

你是一个翻译,但是至少你得懂一点正则表达式。所以,做好你先拿个计算机科学的学位,再做翻译。

谈到分句,也就是将一个文档自动分为合适的句子,也是一个难题。

例如,把句子的结尾设为句号(.),问号(?)和感叹号(!),或许还要加上省略号。

但是,遇到缩写就出问题,例如 a.d. 或者 etc. 之类的,就要例外规则。

另一个问题是句号后面出现参考文献脚注,这是我长期头痛的问题。

具体解决方案见:

Segmentation rules for text with references

我先把他的解决方案抄一遍:

\p{Ll}\.[\)\]”"]?\d+([-–,]\d+)?#!#[\s]+\p{Lu}

但这不是我研究出来的。

*****************************************

如果不是因为我刚买了新的笔记本电脑(原来那个是2010年的Thinkpad X220T,目前主要用途是用CPU的热量来煎鸡蛋),我就不会想起把skydrive 目录下的所有文件移动到onedrive上,就不会丢失所有memoQ的存档文件。

幸好上一个项目刚刚做完,已经发给客户。但是另一个在做圣经注释的项目则不是那么幸运,丢失了翻译好的200多句,而且连TranslationMemory也丢掉了。

所以,只能重新输入文档,重新对齐源语言和目标语言。这才是我研究分句的动机,为了让对齐的过程更自动化一点,不用我再去一个一个句子合并和分句。

******************************************

上面提到的解决方案并不好,所以还是得自己研究。乘着David、Lisa、Angela、Emma都睡着的时候(1天中间只有4个小时的黄金时间),赶紧研究分析正则表达式。最后的结论是,MemoQ的分句规则不识别扩展标签\tag,这件事情应该给他们的研发部门提提意见。

好吧,最终成果是增加的四条规则,一条例外,让分句从3800提高到了4138,基本上把所有脚注尾注的分析都解决了。

规则如下:

#end#\d+#!#[\s]+\p{Lu}

#end#[\s]*#rpar#\d+#!#[\s]+\p{Lu}

#end#\d+#!#[\s]+#lpar#[\s]*\p{Lu}

#end#[\s]*#rpar#\d+#!#[\s]+#lpar#[\s]*\p{Lu}

添加在规则

#end##!#[\s]+\p{Lu}

之下的例外:

\b#abbr##!#[\s]+#lpar#

***********************************************

其中,

#end# :    句号、问号、省略号和感叹号的集合,表示句子的结尾。

#!#      :    分句的位置。等于回车换行符

#abbr# : 各种以句点结束的缩写,例如 etc. a.d. 等等,自行增加所有圣经书卷的缩写

#lpar#   : 左括号、左引号等各种句子起头的方式

#rpar#   : 右括号、右引号等各种句子结尾的方式

\p{Lu}  : 一切大写的Unicode字符。

************************************************************

哈,我在干什么?

 

Tags:
%d bloggers like this: