Tokenize

文本处理任务的一般流程

进行nlp任务都需要进行Tokenize,Tokenize可以理解为是把长句子拆分成有”意义"的小部件,这里的有"意义"是指最终能够使得计算机理解。

使用nltk进行tokenize

import nltk
sentence = = 'hello,world'
tokens = nltk.word_tokenize(sentence)
print(tokens)
#['hello',',','world']

中英文NLP的区别

区别1:分词方式不同,中文更难

英文有天然的空格作为分隔符,但是中文没有。所以如何切分是一个难点,再加上中文里一词多意的情况非常多,导致很容易出现歧义。下文中难点部分会详细说明。

区别2:英文单词有多种形态

英文单词存在丰富的变形变换。为了应对这些复杂的变换,英文NLP相比中文存在一些独特的处理步骤,我们称为词形还原(Lemmatization)和词干提取(Stemming)。中文则不需要

词性还原:does,done,doing,did 需要通过词性还原恢复成 do。

词干提取:cities,children,teeth 这些词,需要转换为 city,child,tooth”这些基本形态

区别3:中文分词需要考虑粒度问题

例如「中国科学技术大学」就有很多种分法:

  • 中国科学技术大学
  • 中国 \ 科学技术 \ 大学
  • 中国 \ 科学 \ 技术 \ 大学

粒度越大,表达的意思就越准确,但是也会导致召回比较少。所以中文需要不同的场景和要求选择不同的粒度。这个在英文中是没有的。

社交网络上文本数据的Tokenize

有时候Tokenize没那么简单,在社交网络上,乱七八糟的不合语法不合正常逻辑的语言很多:比如@某人,表情符号,URL,#话题符号

image-20200802023355811

这种情况下应该使用正则表达式辅助进行文本的预处理

参考资料

一文看懂NLP里的分词(中英文区别+3 大难点+3 种典型方法)

最后修改:2022 年 01 月 25 日
如果觉得我的文章对你有用,请随意赞赏