自然语言处理(NLP)

这种技术的缺陷在于, 它是对原文进行基于统计的抽样, 其结果只是对文本句子的提取.
这种技术的结果并不令人满意, 因为它是建立在删除内容之上的, 因此一定会有造成信息的丢失.

理想中的文本摘要技术是建立在理解内容的基础上的总结, 而不是提取.
但基于AI的简写又能在多大程度上满足人们的需要呢? 这仍然是未知的.

GPT-3具有理解内容并将内容转写为更短的文本的能力,
因此GPT-3可能会改变文本摘要的游戏规则.

根据情况, 可以像拉丁字母那样直接使用逐汉字, 连续二汉字, 连续三汉字进行索引.
与专门的中文分词方法相比, term数量太大, 查询效率较低.

通过查找词典里已有的词进行切分.
词语越长, 匹配的优先级就越高.
与其他方法相比, 在速度上很有优势.

  • 基于词典规则的系统无法正确处理有二义性的短语.
  • 无法处理未记载于词典里的新词.

以下算法的性能瓶颈在于"判断词典是否有这个词", 因此有多种实现方式:

  • Set: 牺牲时间换空间
  • Map: 牺牲空间换时间
  • 字典树(Trie): 仅在静态语言里可用(内存结构有优势)的推荐做法, 需要提前编译
  • 前缀树(Prefix Trie): 在字典树的基础上上进一步加快速度, 编译时间更长.
  • AC自动机(Aho-Corasick): 优于前缀树, 内部含有后缀树.
  • BinTrie: 首字散列其余二分的字典树, 出自HanLP.
  • 双数组字典树(DAT, Double Array Trie): 速度最快的结构, 实现难度大, 编译难度大.
    DAT的经典实现是Darts(Double-ARray Trie System)

该实现通常会暴露一个类似commonPrefixSearch的方法, 用以进行前缀匹配,
用于切分时, 只需要创建一层循环, 将子字符串投入匹配:

for i in 0..text.len() {
for (id, length) in dat.common_prefix_search(&text[i..]) {
// ...
}
}

朴素完全切分是最简单的完全切分(找出文本中的所有单词)算法.

其具体做法是创建两层嵌套循环, 第一层作为起点索引, 第二层作为终点索引,
遍历被查找字符串中的所有子文本, 输出词典中的所有匹配项.

由于复杂度是 O(n^2), 性能最差, 稍微长一点的文本就会造成性能问题.

完全切分方式之一, 通过AC自动机找到所有匹配项.

完全切分方式之一, 通过ACDAT找到所有匹配项.

性能最高的完全切分方式, 通过DAT找到所有匹配项.

在分词时正向遍历匹配最长的词, 每当成功匹配到一个最长词后, 从这个词之后的字符继续匹配, 直到结束.

正向最长匹配的逆向版本, 在分词时逆向遍历匹配最长的词.
在实践中效果比正向最长匹配好很多, 但仍然不完美.

为解决正向, 逆向最长匹配的问题而出现的一种融合了正向逆向两种方法的匹配规则:
同时进行正向和逆向匹配.
如果结果的词数量不同, 则取数量更少的那个作为结果.
如果结果的词数量相同, 则取字符更少的作为结果.
如果字符数量也相同, 返回逆向最长匹配的结果.

在实践中效果和逆向最长匹配差不多, 有时甚至会比逆向最长匹配差.

https://github.com/NLP-LOVE/Introduction-NLP
https://github.com/NLP-LOVE/ML-NLP

在深度学习的情况下, 训练模型不需要预先分词,
不分词(逐字符)的训练结果比分词的要好.

由Google于2019年发布的NLP模型.
它直接对中文文本内容进行基于字符的tokenize.

句子中出现了不存在于词典中的词.

能够从文本里发现词与词的关系, 从而发现新词的模型.

最流行的方案是将单字分为Begin(B), Middle(M), End(E), Single(S)四种类型.

根据词性将词分类.

  • 汉语中一个单词具有多个词性是很常见的
  • 依赖人力进行标注, 可用的语料库很少
  • 学界对于标注规范存在分歧

提取文本中高频出现的词汇作为关键词(需要过滤掉停用词).

高频词不等于关键词, 因此通常会使用TF-IDF.

TF-IDF是词频和逆向文档频率的乘积, 旨在定义文档中词语(或短语)的重要性.

TF-IDF的值与词语在文档中出现的词频次数成正比, 与在整个语料库里出现的频率成反比(从而将常见的词语降权).

TF-IDF有多种计算方法, 最简单的一种是这样的:
词频 = 词语出现的次数/该文档的总词数
逆向文档频率 = 文档总数/出现词语的文档数量
TF-IDF= 词频 * 逆向文档频率

需要大型的语料库来得出TF-IDF值.

TF-IDF的一种改进变种, 不仅能衡量一个词的重要性, 还能衡量多个词的重要性.

北京大学语言计算与机器学习研究组推出的中文分词工具包.
准确率高于jieba和THULAC.

性能比jieba差, 内存占用量也高于jieba.

清华大学自然语言处理与社会人文计算实验室推出的中文分词工具包.
准确率高于jieba.

使用最新NLP技术的NLP项目.

由Java编写, 使用经典NLP技术实现.

由Python编写, 使用深度学习技术实现(即使用Python的原因).

载入模型的速度相当慢, 只支持按句子分词.
对于开放和封闭两个模型来说, 一条简单的句子在CPU下需要几十毫秒乃至数百毫秒才能完成分词,
实在难以作为一个分词组件使用.

据称jieba的词性标注参照了 ICTCLAS 汉语词性标注集.

jieba项目已知存在诸多问题:

  • 技术陈旧.
  • 算法存在缺陷.
  • 自带词典的词性标注错误百出.
  • 词典收录了一些莫明其妙的词汇.
  • 词典大小不匹配: idf词典的内容少于主词典.
  • 用户词典优先级太高, 会覆盖掉默认词典里相同的词, 这导致一些原本有词性的词丢失词性标注.
  • 分词功能不支持自定义停用词.
  • API缺乏实用性:
    • 无法在不分词的前提下查询词典里的项目, 例如查找单个词汇的td-idf值.
    • cutForSearch(在不使用HMM的情况下)和cutAll会把单词切分为字母, 简直无法理解.
    • cut系列的API太高级, 以至于无法生成适合连续短语搜索的分词结果.
  • 尽管jieba的各种实现速度都比较快, 但准确性往往大幅弱于其他解决方案.
  • cppjieba的实现没有足够的内存优化, 载入字典后会占用大量内存.

jieba自带的词典长期没有更新, 最旧的词典已经8年没有改动了.

dict: 主词典, 带权重和词性标签.
hmmDict: 隐式马尔科夫模型, 建议使用默认词典.
userDict: 用户词典, 建议自己根据需要定制.
idfDict: 关键词抽取所需的idf信息.
stopWordDict: 关键词抽取所需的停用词列表.

词典需是UTF-8编码的文件, 格式如下:
{词语} {词频(可省略)} {词性(可省略}}

示例:
创新办 3 i
云计算 5
凱特琳 nz

停用词词典只适用于TFIDF和TextRank, 不可用于分词.
停用词词典没有外部接口, 需要修改源代码才能实现.

专门开发了更有效率的DAT实现cedarwood以提升性能,
但其性能(v0.4.5)已经远慢于其他实现:

  • yada(v0.5.0, 性能为cedarwood的2~3倍)
  • daachorse(v0.4.3, 性能为cedarwood的4~5倍)

该实现的分词存在一些问题, 无法分词 test-1 这样的文本:
https://github.com/messense/jieba-rs/issues/83

停用词词典只适用于KeyExtractor和TextRankExtractor, 不可用于分词.

实词:名词、动词、形容词、状态词、区别词、数词、量词、代词
虚词:副词、介词、连词、助词、拟声词、叹词。

  • nr 人名(包括"@XXX"), 姓名整体标注, 如"李某某", "李××"标为nr
    • nr1 中文姓氏, 如果单出现姓氏, 标为nr1, 姓名一起出现的, 合起来标nr
    • nrf 音译人名, 如"奥巴马", "布拉德・皮特"
  • ns 地名, 如"中国", "上海市", "江浙"
  • nt 组织机构名, 如"中国队", "央行"
  • nz 其它专有名词, 如"银联", "腾讯"
  • nl 名词性惯用语, 如"豪言壮语","亲朋好友"
  • vd 副动词, 如"持续/vd 提供/v", "优先/vd 安排/v"
  • vshi 动词"是"
  • vyou 动词"有"
  • vi 不及物动词, 如"运营", "点球"
  • vl 动词性惯用语, 如"远走高飞", "相依为命"
  • ad 副形词, 如"经过/p 谨慎/ad 筛选/v"
  • an 名形词, 如"虽然/c 困难/an 很多/m"
  • al 形容词性惯用语, 如"拥挤不堪", "难能可贵"
  • bl 区别词性惯用语, 如"至关重要", "光天化日"
  • dl 副词性惯用语, 如"对了", "万万"
  • pba 介词"把"
  • pbei 介词"被"
  • uzhe 助词"着"
  • ule 助词"了"
  • uguo 助词"过"
  • ude 助词"的", "地", "得"
  • usuo 助词"所"
  • udeng 助词"等", "等等"
  • uyy 助词"一样", "似的"
  • udh 助词"的话"
  • uzhi 助词"之"
  • ulian 助词"连"
  • wkz 左括号, 全角: ( 〔 [ { 《 【 〖〈 半角: ( \[ { <
  • wky 右括号, 全角: ) 〕 ] } 》 】 〗 〉 半角: ) \] { >
  • wyz 左引号, 全角: “ ‘ 『
  • wyy 右引号, 全角: ” ’ 』
  • wj 句号, 全角: 半角: .
  • ww 问号, 全角: 半角: ?
  • wt 叹号, 全角: 半角: !
  • wd 逗号, 全角: 半角: ,
  • wf 分号, 全角: 半角: ;
  • wn 顿号, 全角:
  • wm 冒号, 全角: 半角: :
  • ws 省略号, 全角: …… …
  • wp 破折号, 全角: —— -- ——- 半角: — —-
  • wb 百分号千分号, 全角: % ‰ 半角: %
  • wh 单位符号, 全角: ¥ $ £ ° ℃ 半角:=$=

兼容"ICTPOS3.0汉语词性标记集"和"现代汉语语料库加工规范——词语切分与词性标注"

  • ad 副形词
  • ag 形容词性语素
  • al 形容词性惯用语
  • an名形词
  • begin 仅用于始
  • bg 区别语素
  • bl 区别词性惯用语
  • cc 并列连词
  • dg 辄, 俱, 复之类的副词
  • dl 连语
  • end 仅用于终
  • gb 生物相关词汇
    • gbc 生物类别
  • gc 化学相关词汇
  • gg 地理地质相关词汇
  • gi 计算机相关词汇
  • gm 数学相关词汇
  • gp 物理相关词汇
  • mg 数语素, Mg 甲乙丙丁之类的数词
  • mq数量词
  • nb 生物名
    • nba 动物名
    • nbc 动物纲目
    • nbp 植物名
  • nf 食品, 比如"薯片"
  • ng 名词性语素
  • nh 医药疾病等健康相关名词
    • nhd 疾病
    • nhm 药品
  • ni 机构相关(不是独立机构名)
    • nic 下属机构
    • nis 机构后缀
    • nit 教育相关机构
  • nl 名词性惯用语
  • nm 物品名
    • nmc 化学品名
  • nn 工作相关名词
    • nnd 职业
    • nnt 职务职称
  • nr人名
    • nr1 复姓
    • nr2 蒙古姓名
    • nrf 音译人名
    • nrj 日语人名
  • ns 地名
    • nsf 音译地名
  • nt 机构团体名
    • ntc公司名
    • ntcb 银行
    • ntcf 工厂
    • ntch 酒店宾馆
    • nth 医院
    • nto 政府机构
    • nts 中小学
    • ntu大学
  • nx 字母专名
  • nz 其他专名
  • pba 介词"把"
  • pbei 介词"被"
  • qg 量词语素
  • qt 时量词
  • qv 动量词
  • rg 代词性语素
  • Rg 古汉语代词性语素
  • rr 人称代词
  • ry 疑问代词
    • rys 处所疑问代词
    • ryt 时间疑问代词
    • ryv 谓词性疑问代词
  • rz 指示代词
    • rzs 处所指示代词
    • rzt 时间指示代词
    • rzv 谓词性指示代词
  • tg 时间词性语素
  • ud 助词
    • ude1 的 底
    • ude2 地
    • ude3 得
    • udeng 等 等等 云云
    • udh 的话
  • ug 过
    • uguo 过
  • uj 助词
  • ul 连词
    • ule 了 喽
    • ulian 连
    • uls 来讲 来说 而言 说来
  • usuo 所
  • uv 连词
  • uyy 一样 一般 似的 般
  • uz 着
    • uzhe 着
    • uzhi 之
  • vd 副动词
  • vf 趋向动词
  • vg 动词性语素
  • vi 不及物动词(内动词)
  • vl 动词性惯用语
  • vn 名动词
  • vshi 动词"是"
  • vx 形式动词
  • vyou 动词"有"
  • wb 百分号千分号, 全角: % ‰ 半角: %
  • wd 逗号, 全角: 半角: ,
  • wf 分号, 全角: 半角: ;
  • wh 单位符号, 全角: ¥ $ £ ° ℃ 半角: $
  • wj 句号, 全角:
  • wky 右括号, 全角: ) 〕 ] } 》  】 〗 〉 半角: ) \] { >
  • wkz 左括号, 全角: ( 〔 [ { 《 【 〖 〈 半角: ( \[ { <
  • wm 冒号, 全角: 半角: :
  • wn 顿号, 全角:
  • wp 破折号, 全角: —— -- ——- 半角: — —-
  • ws 省略号, 全角: …… …
  • wt 叹号, 全角:
  • ww 问号, 全角:
  • wyy 右引号, 全角: ” ’ 』
  • wyz 左引号, 全角: “ ‘ 『
  • xu 网址URL
  • xx 非语素字
  • yg 语气语素
  • zg 状态词
代码 名称 举例
a 形容词 最/d 大/a 的/u
ad 副形词 一定/d 能够/v 顺利/ad 实现/v 。/w
ag 形语素 喜/v 煞/ag 人/n
an 名形词 人民/n 的/u 根本/a 利益/n 和/c 国家/n 的/u 安稳/an 。/w
b 区别词 副/b 书记/n 王/nr 思齐/nr
c 连词 全军/n 和/c 武警/n 先进/a 典型/n 代表/n
d 副词 两侧/f 台柱/n 上/ 分别/d 雄踞/v 着/u
dg 副语素 用/v 不/d 甚/dg 流利/a 的/u 中文/nz 主持/v 节目/n 。/w
e 叹词 嗬/e !/w
f 方位词 从/p 一/m 大/a 堆/q 档案/n 中/f 发现/v 了/u
g 语素 例如dg 或ag
h 前接成分 目前/t 各种/r 非/h 合作制/n 的/u 农产品/n
i 成语 提高/v 农民/n 讨价还价/i 的/u 能力/n 。/w
j 简称略语 民主/ad 选举/v 村委会/j 的/u 工作/vn
k 后接成分 权责/n 明确/a 的/u 逐级/d 授权/v 制/k
l 习用语 是/v 建立/v 社会主义/n 市场经济/n 体制/n 的/u 重要/a 组成部分/l 。/w
m 数词 科学技术/n 是/v 第一/m 生产力/n
n 名词 希望/v 双方/n 在/p 市政/n 规划/vn
ng 名语素 就此/d 分析/v 时/Ng 认为/v
nr 人名 建设部/nt 部长/n 侯/nr 捷/nr
ns 地名 北京/ns 经济/n 运行/vn 态势/n 喜人/a
nt 机构团体 冶金/n 工业部/n 洛阳/ns 耐火材料/l 研究院/nnt
nx 字母专名 ATM/nx 交换机/n
nz 其他专名 德士古/nz 公司/n
o 拟声词 汩汩/o 地/u 流/v 出来/v
p 介词 往/p 基层/n 跑/v 。/w
q 量词 不止/v 一/m 次/q 地/u 听到/v ,/w
r 代词 有些/r 部门/n
s 处所词 移居/v 海外/s 。/w
t 时间词 当前/t 经济/n 社会/n 情况/n
tg 时语素 秋/Tg 冬/tg 连/d 旱/a
u 助词 工作/vn 的/u 政策/n
ud 结构助词 有/v 心/n 栽/v 得/ud 梧桐树/n
ug 时态助词 你/r 想/v 过/ug 没有/v
uj 结构助词"的" 迈向/v 充满/v 希望/n 的/uj 新/a 世纪/n
ul 时态助词"了" 完成/v 了/ ul
uv 结构助词"地" 满怀信心/l 地/uv 开创/v 新/a 的/u 业绩/n
uz 时态助词"着" 眼看/v 着/uz
v 动词 举行/v 老/a 干部/n 迎春/vn 团拜会/n
vd 副动词 强调/vd 指出/v
vg 动语素 做好/v 尊/vg 干/j 爱/v 兵/n 工作/vn
vn 名动词 股份制/n 这种/r 企业/n 组织/vn 形式/n ,/w
w 标点符号 生产/v 的/u 5G/nx 、/w 8G/nx 型/k 燃气/n 热水器/n
x 非语素字
y 语气词 已经/d 30/m 多/m 年/q 了/y 。/w
z 状态词 势头/n 依然/z 强劲/a ;/w
  • ad 副形词
  • an 名形词
  • ag 形容词性语素
  • al 形容词性惯用语
  • bl 区别词性惯用语
  • cc 并列连词
  • mq 数量词
  • nr1 汉语姓氏
  • nr2 汉语名字
  • nrj 日语人名
  • nrf 音译人名
  • nsf 音译地名
  • pba 介词"把"
  • pbei 介词"被"
  • qv 动量词
  • qt 时量词
  • rzt 时间指示代词
  • rzs 处所指示代词
  • rzv 谓词性指示代词
  • ryt 时间疑问代词
  • rys 处所疑问代词
  • ryv 谓词性疑问代词
  • tg 时间词性语素
  • uzhe 着
  • ule 了 喽
  • uguo 过
  • ude1 的 底
  • ude2 地
  • ude3 得
  • usuo 所
  • udeng 等 等等 云云
  • uyy 一样 一般 似的 般
  • udh 的话
  • uls 来讲 来说 而言 说来
  • uzhi 之
  • ulian 连
  • vd 副动词
  • vn 名动词
  • vshi 动词"是"
  • vyou 动词"有"
  • vf 趋向动词
  • vx 形式动词
  • vi 不及物动词(内动词)
  • vl 动词性惯用语
  • vg 动词性语素
  • wkz 左括号, 全角: ( 〔 [ { 《 【 〖 〈 半角: ( \[ { <
  • wky 右括号, 全角: ) 〕 ] } 》 】 〗 〉 半角: ) \] { >
  • wyz 左引号, 全角: “ ‘ 『
  • wyy 右引号, 全角: ” ’ 』
  • wj 句号, 全角:
  • ww 问号, 全角: 半角: ?
  • wt 叹号, 全角: 半角: !
  • wd 逗号, 全角: 半角: ,
  • wf 分号, 全角: 半角: ;
  • wn 顿号, 全角:
  • wm 冒号, 全角: 半角: :
  • ws 省略号, 全角: …… …
  • wp 破折号, 全角: —— -- ——- 半角: — —-
  • wb 百分号千分号, 全角: % ‰ 半角: %
  • wh 单位符号, 全角: ¥ $ £ ° ℃ 半角: $
  • xx 非语素字
  • xu 网址URL