文本处理基础
1.正则表达式(Regular Expressions)
正则表达式是重要的文本预处理工具。
以下截取了部分正则写法:
2.分词(Word tokenization)
我们在进行每一次文本处理时都要对文本进行统一标准化(text normalization)处理。
- 文本规模 How many words?
我们引入变量Type和Token
分别代表词典中的元素(an element of the vocabulary)和这个元素在文中的出现(an instance of that type in running text)。
如果定义 N = number of tokens 和 V = vocabulary = set of types,|V| is the size of the vocabulary,那么根据Church and Gale (1990)的研究工作可知: |V| > O(N?) ,我们可以从下图中的shakespeare著作和google多元模型等等的统计中看到上面的结论:
- 分词算法:
有时我们将非字母字符作为token分隔符作为简单的分词器实现,但这样存在许多弊问题像:
- Finland’s capital –> Finland Finlands Finland’s ?
- what’re, I’m, isn’t -> What are, I am, is not
- Hewlett-Packard -> Hewlett Packard ?
- Lowercase -> lower-case lowercase lower case ?
- 。。。
虽说上面的方法对英语这种包含固定分隔符的语言行之有效,但是对于汉语日语等词语间没有空格的就不适用了。
中文分词(Word Tokenization in Chinese)或者叫做(Word Segmentation),最简单且普遍使用的方法叫做最大匹配法Maximum Matching (also called Greedy)
其中正向最大匹配法FFM步骤如下(forward Maximum Matching):
- 正向即从前往后取词,对照字典中的词语进行匹配
- 如果没有匹配成功,则删除掉最后一个词,继续匹配。
- 重复2步骤直到匹配成功,则将匹配到的词取出作为成功的词片段,继续匹配剩下的词语(前面删除掉的收回)
具体方法可以参考这篇文章:
- 文本归一化(normalization):
主要包括大小写转换、词干提取、繁简转换等问题。
- 断句(Sentence Segmentation and Decision Trees):
像 !, ? 等符号是有明确的分割意义的,但是在英文中“ . ”会在多种场景下被使用,如缩写“Inc.”、“Dr.”、“.02%”、“4.3”等,无法通过简单的正则表达式处理 ,我们引入了决策树的分类方法进行判断是否是句子中断EndOfSentence/NotEndOfSentence:
我们可以通过使用决策树的方式来解决问题,我们也可以基于上述特征使用其他分类方法如:逻辑回归,SVM,神经网络等等。
版权声明:本文为博主原创文章,未经博主允许不得转载。