2008年4月8日

can't如何tokenize?

今天处理一点句子时,发现一个有点麻烦的问题。

don't会被tokenize成[do][n't]

can't会被tokenize成[ca][n't]

 

don't的处理感觉是没有任何问题的,但是can't明显错了。那改成[can]['t]呢,感觉还是有点不妥。

遇到won't该怎么tokenize呢,[won]['t]还是[wo][n't]?感觉都不妥。

仔细思考,如果要强行分开n't结构的话,感觉这个问题应该目前任何tokenizer都不能解决的。

 

能够想到的两个办法如下:

1. 直接保留,不进行分割,即保留为[don't][can't]和[won't]

2.先还原再处理,最终如果需要在原文中标记的话再加上后处理,及结果为

[do][not]

[can][not]

[will][not]

 

最后决定两种方案里面选一种,需要绝对统一起来进行处理。想到does not do something和do not do something的结构在采用第二种方案时更合理些。我决定采用第二种方案来解决这个问题。至于n't以外的其他词汇层面的缩写都采用这种方法来处理。

2 条评论:

astro 说...

我觉得应该从功能和频率上来考虑这个问题。
don't表示否定对应的肯定形式为do,但是一般表示肯定的句子除了需要强调之外是不用do的,而can't对应的肯定形式can在表达肯定含义的时候是应该用在句子中的,另外won't和will也类似于can't和can。
tokenization的目的是归一化以减少稀疏,如果出现次数比较多的话,don't,can't,won't这些词似乎就不需要tokenization了。

Bill Lang 说...

分析的有道理,而且从更为深入的角度来考察这个问题了。有做研究的感觉啊。

感觉在没有出现次数分析结果的情况下,采用还原式的tokenization就算是一种折中方案了。