I. 正则表达式(regular expression)

正则表达式是专门处理文本字符串的正式语言(这个是基础中的基础,就不再详细叙述,不了解的可以看这里)。

  • ^(在字符前): 负选择,匹配除括号以外的字符。比如[^A-W]匹配所有非大写字符;[^e^]匹配所有e和^以外的字符
  • |:或者。比如a|b|c等价于[a-c]
  • *:匹配大于等于0个符号前面的字符;+:匹配至少一个前面的字符;.:匹配所有单个字符;?:匹配0或1个前面的字符
  • \:转义符:将特殊字符转化为简单字符。比如.匹配所有字符,.匹配.。
  • 锚定符。^:匹配开头;$:匹配结尾。比如:^[a-z]匹配非小写字母开头的字符串;.$匹配所有.结尾的字符串。

匹配的错误类型:

  • 一类错误(type I error):假阳性。匹配上不想匹配的字符串。比如只想匹配单词the却匹配上了other。
  • 二类错误(type II error):假阴性。没有匹配上想要的字符串。比如像匹配单词the却没有匹配The。

    基本上在NLP分析过程(甚至是所有机器学习问题)都是在处理这两类错误。减少一类错误(假阳性)意味着提高模型精度;减少二类错误(假阴性)意味着增加召回率。

总结:

正则表达式很强大,通配操作很方便,一般也是文本处理的第一步。在许多困难的任务中用到的机器学习分类器也会使用正则表达式作为特征。

II. 分词

文本标准化一般操作:1.断句。 2.分词。 3. 统一词格式(大小写,复数单数形式,所有格形式等)。

词根(lemma)和词形(wordform)



例子中的San Francisco可以拆开作为两个token,也可以整个作为一个token;而前后两个the只能算作一个type,而they和their也可以看成一个type

统计语料(corpus)时,一般默认用N代表tokens的数量;用V代表词汇库,即所有类型;|V|代表词汇库的大小。

Church & Gale(1990)提出|V| > O(N^1/2)

分词过程的一些问题:

  1. 缩写(有些包含标点符号)

  2. 其他语言
  • 法语:

  • 德语:复合名称之间没有空格

  • 中文和日文:单词之间没有空格

中文分词:

中文由字符组成,每个字符一般时单音节和单字形的;平均每个单词包含2.4个字符。中文标准基线的分词算法是最大匹配算法(maximum matching algorithm)或贪婪算法(greedy algorithm)。



这里,由于中文的单词长度相对比较一致,因此这个方法效果比较好,但是这个方法对英语来说并不合适,因为英文单词长短差异很大且常长度不同的单词一般都混杂在一起使用。因此目前主流的分词算法都采用了概率模型。

III. 词标准化和词干提取

  1. 标准化

    信息提取的时候,indexed text和query terms需要有相同的格式。比如U.S.A --> USA

    上述处理可以通过删除词内.号实现。

    非对称推广(asymmetric expansion):比如:



    但是实际操作中为了降低时间复杂性等考虑一般还是会采用对称推广。
  2. 大小写折叠(Case Folding):将所有大写字符转换成小写字符

    可能的例外:句中间的大写字符,比如General Motors;缩写单词的大写字符,比如Fed(Federal reserve bank)
  3. 词形还原(lemmatization)

    将词的变体转换为原型词根(寻找不同变体的共同词头)。比如:



    构词(morphology):词素(morpheme)是指构成词的最小的有语法意义单位。由词干(stem)和词缀(affix)组成。



    其中方框内的就是词干,而圆圈内的就是词缀。
  4. 词干化(stemming)

    在信息提取时将词转换成其词干形式,而词干化就是将词的词缀去除留下词干(这一过程时语言依赖的,不同语言的词干化规则不同)。比如:



    最著名的词干分析器是Porter's algorithm:这是由一系列按顺序排列的词干化规则组成

IV. 分句

将文本分成按边界一个个单句。!和?是很清晰的句子边界标志,但是.号不是。.号可以作为句子边界,缩写标志(Inc.和Dr.等)以及浮点数(.2%和4.3等)。因此在判断.号是否为边界的时候可以采用包括决策树,正则表达式,SVM,logistic regression , neural network等分类器来进行判断。

由于决策树只需通过if-else进行判断,所以利用决策树作为分类器十分直观易懂。决策树的关键在于选取特征。比如提取.号相关的文本特征:



但是除非特征数很少,否则很难手动进行决策树的构建,因为对于大部分数字型特征都需要设定阈值。所以一般都是通过机器学习的方式从语料自动学习来生成结构。

传送门:https://www.youtube.com/watch?v=di0N3kXfGYg

Stanford NLP 学习笔记2:文本处理基础(text processing)的更多相关文章

  1. Stanford NLP学习笔记:7. 情感分析(Sentiment)

    1. 什么是情感分析(别名:观点提取,主题分析,情感挖掘...) 应用: 1)正面VS负面的影评(影片分类问题) 2)产品/品牌评价: Google产品搜索 3)twitter情感预测股票市场行情/消 ...

  2. Stanford NLP学习笔记1:课程介绍

    Stanford NLP课程简介 1. NLP应用例子 问答系统: IBM Watson 信息提取(information extraction) 情感分析 机器翻译 2. NLP应用当前进展 很成熟 ...

  3. stanford NLP学习笔记3:最小编辑距离(Minimum Edit Distance)

    I. 最小编辑距离的定义 最小编辑距离旨在定义两个字符串之间的相似度(word similarity).定义相似度可以用于拼写纠错,计算生物学上的序列比对,机器翻译,信息提取,语音识别等. 编辑距离就 ...

  4. Linux 学习笔记之超详细基础linux命令 Part 13

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 12---------------- ...

  5. Linux 学习笔记之超详细基础linux命令 Part 4

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 3----------------- ...

  6. Linux 学习笔记之超详细基础linux命令 Part 2

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122 ---------------------------------接Part 1----------------- ...

  7. Linux 学习笔记之超详细基础linux命令 Part 1

    Linux学习笔记之超详细基础linux命令 by:授客 QQ:1033553122   说明:主要是在REHL Server 6操作系统下进行的测试 --字符界面虚拟终端与图形界面之间的切 方法:[ ...

  8. 【学习笔记】jQuery的基础学习

    [学习笔记]jQuery的基础学习 新建 模板 小书匠  什么是jQuery对象? jQuery 对象就是通过jQuery包装DOM对象后产生的对象.jQuery 对象是 jQuery 独有的. 如果 ...

  9. 【学习笔记】JavaScript的基础学习

    [学习笔记]JavaScript的基础学习 一 变量 1 变量命名规则 Camel 标记法 首字母是小写的,接下来的字母都以大写字符开头.例如: var myTestValue = 0, mySeco ...

随机推荐

  1. div 在页面上漂浮

    <div id="codefans_net" style="position:absolute;z-index:5;">        <a& ...

  2. 使用SqlLocalDB命令行管理LocalDB

    SqlLocalDB.exe start v11.0 SqlLocalDB.exe info v11.0 SQL Server Management Stdio添加管道连接实例 默认实例名(local ...

  3. springmvc学习笔记--ueditor和springmvc的集成

    前言: 在web开发中, 富文本的编辑器真心很重要. 有电商店铺的打理, 新闻稿/博客文章/论坛帖子的编辑等等, 这种所见即所的编辑方式, 大大方便了非技术人员从事互利网相关的工作. 因为手头有个小项 ...

  4. C#学习手册

    考研学子为何放弃考研?C++开发ArcGis为何无疾而终?C#为何又成为新宠?这一切得一切是人性的扭曲还是道德的败坏,敬请收看接下来的C#学习手册.ps:一天一更.拖更打死.

  5. 推荐系统学习--cb+cf 初见

    对于推荐系统的推出有两个条件:1.信息过载 ,2用户没有明确的需求 推荐系统算法中常见的有基于内容推荐,协同过滤推荐,协同过滤还可以分为基于人的协同过滤,基于内容协同过滤:社会推荐等 如何理解这些推荐 ...

  6. IDEA IntelliJ常用设置以及快捷键(转)

    转载自:http://macrochen.iteye.com/blog/1035680 关于字体的设置 IDEA下使用雅黑Consolas混合字体      快捷贱, 快捷贱 , 快捷键贱    In ...

  7. springMVC 返回json 忽略类中属性的注解

    该注解使用在 类名,接口头上 @JsonIgnoreProperties(value={"comid"}) //希望动态过滤掉的属性 该注解使用在get方法头上 @JsonIgno ...

  8. ionic tab导航在android 真机测试中 导航在顶部解决办法

    1.打开app.js文件 2.找到.config(function($stateProvider, $urlRouterProvider)){ $stateProvider ... ... } 3.加 ...

  9. sae flask 微信公众平台开发

    index.wsgi启动服务文件 import sae from evilxr import app application = sae.create_wsgi_app(app) evilxr.py ...

  10. UVA 1151

    /* 题意:有n个点,现在需要联通所有,有q种套餐可以选择, 当然套餐之外也可以自己添加边,意为达到最短距离. 题意很明显,不知道需要使用哪一种套餐, 那么需要枚举每一种套餐的情况. 然后再进行对比. ...