目录

1.算法介绍

1.1 解决问题

1.2 具体过程

1.3 适用范围

1.4 优缺点分析

2.代码实现

2.1 文件目录

2.2 词典

2.3 代码(python版)

2.4 运行结果


1.算法介绍

1.1 解决问题

对于不包含明显的词之间的分隔符的语言(以中文为代表)进行分词操作。

1.2 具体过程

FMM算法即正向最大匹配分词算法,即从前往后扫描句子中的字符串,尽量找到词典中较长的单词作为分词的结果。

1.3 适用范围

中文等不含明显的词的语句进行分词。

1.4 优缺点分析

1.4.1 优点:可以较为简单无脑的进行分词。

1.4.2 缺点:第一、算法倾向于且分出比较长的词,这容易导致错误的切分结果,如库中有词语:{‘我’,‘喜欢’,‘打’,‘篮球’,‘打篮球’},那么在我想把打篮球这件事拆分成‘打’这一动作和‘篮球’这一名词上,FMM算法给出的结果是“我 喜欢 打篮球”,显然这不是我们想要的结果,而FMM算法只顾在词典中寻找最长的匹配字符串即返回。第二、对于“未登录词”的表现来看,因为该算法全权依赖于库词典,于是当出现没见过的词后,算法根本无法反应。

2.代码实现

2.1 文件目录

2.2 词典

lexicon.txt

你
我
他
喜欢
爱
看
打
篮球
读书
蔡徐坤
打篮球
打羽毛球
滑雪
溜冰
威斯布鲁克

2.3 代码(python版)

def fmm_word_seg(sentence,lexicon,max_len):# sentence: 待分词的句子# lexicon: 词典(所有单词集合)# max_len:词典中最长单词的长度begin = 0end = min(begin + max_len,len(sentence))words = [] # 记录分好词的列表while begin < end:# 先按最大的长度试:从最长单词的长度开始比较,长度逐次减一。word = sentence[begin:end]# 所截单词在词典中或者找到只剩一个词时,加入返回列表中。if word in lexicon or end - begin == 1:words.append(word)begin = end # 分好的地方就越过end = min(begin + max_len , len(sentence))# 下一次也是这样else:end -= 1return words# 返回分好词的列表
# 函数用于将文本文件中的单词读入一个元素集中(可以看作是列表)
# 并记录最长的单词长度放在max_len中
# 返回lexicon和max_len
def load_dict():f = open("lexicon.txt",encoding="utf-8")# set()函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等lexicon = set()max_len = 0for line in f:word = line.strip()lexicon.add(word)if len(word) > max_len:max_len = len(word)f.close()return lexicon,max_len # max_len为单个词的最长长度lexicon,max_len = load_dict()
words = fmm_word_seg(input("请输入句子:"),lexicon,max_len)for word in words:print(word,)

2.4 运行结果

自然语言处理(基于预训练模型)01FMM分词算法相关推荐

  1. 自然语言处理:基于预训练模型的方法(一)

    自然语言处理:基于预训练模型的方法 1.2 自然语言处理的难点 1.3 自然语言处理任务体系 1.2 自然语言处理的难点 1.2.1 抽象性 语言是由抽象符号构成的,每个符号背后都对应着现实世界或人们 ...

  2. 【自然语言处理(NLP)】基于预训练模型的机器阅读理解

    [自然语言处理(NLP)]基于预训练模型的机器阅读理解 作者简介:在校大学生一枚,华为云享专家,阿里云专家博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实践资源建设专 ...

  3. 论文阅读:Pre-trained Models for Natural Language Processing: A Survey 综述:自然语言处理的预训练模型

    Pre-trained Models for Natural Language Processing: A Survey 综述:自然语言处理的预训练模型 目录 Pre-trained Models f ...

  4. CV之NS之VGG16:基于预训练模型VGG16训练COCO的train2014数据集实现训练《神奈川冲浪里》风格配置yml文件

    CV之NS之VGG16:基于预训练模型VGG16训练COCO的train2014数据集实现训练<神奈川冲浪里>风格配置yml文件 目录 一.训练 1.<神奈川冲浪里>风格 2. ...

  5. 让机器学会断句:基于词典的Bigram分词算法

    目录 概述 从序列到图 Unigram 模型 Bigram 模型 实现 概述 分词是NLP任务Pipeline中的重要步骤,一般来说都需要将句子切分成词之后,才能进一步把词进行向量化,最终输出各种各样 ...

  6. 基于预训练模型 ERNIE 实现语义匹配

    基于预训练模型 ERNIE 实现语义匹配 本案例介绍 NLP 最基本的任务类型之一 -- 文本语义匹配,并且基于 PaddleNLP 使用百度开源的预训练模型 ERNIE1.0 为基础训练效果优异的语 ...

  7. 基于词表的中文分词算法

    基于词表的中文分词算法 正向最大匹配法 对于输入的一段文本从左至右,以贪心的方式切分出当前位置上长度最大的词.正向最大匹配法是基于词典的分词方法,其分词原理是:单词的颗粒度越大,所能表示的含义越确切. ...

  8. 基于预训练模型的军事领域命名实体识别研究

    摘要 [目的]为了解决开源非结构化军事领域数据的命名实体识别问题.[方法]本文提出基于预训练模型(Bidirectional Encoder Representations from Transfor ...

  9. N-LTP:基于预训练模型的中文自然语言处理平台

    2021-05-03 18:12:52 论文名称:N-LTP: A Open-source Neural Chinese Language Technology Platform with Pretr ...

最新文章

  1. linux grep find查找文件夹、代码中的某行/字符串
  2. 最大信息系数——检测变量之间非线性相关性
  3. Quartus II12.0安装教程
  4. Pytorch使用Vision Transformer做肺癌和结肠癌组织病理学图像分类
  5. Metasploit
  6. 显示行号 visual studio 1006
  7. github添加ToKen到本地并写入netrc实现自动登录
  8. sublime text3的一些小技巧记录(配gif图)
  9. delphi 调试控件代码_机器人调试(六十七)
  10. Flutter OverflowBox溢出容器
  11. 临渊羡鱼 不如退而结网
  12. python游戏设计毕业论文_游戏毕业设计论文
  13. 代理应用好文两篇(1)
  14. wps表格的宏被禁用问题
  15. Teams 的 Meeting App
  16. 新面貌,新征程—读《新程序员》有感
  17. 大一下c语言笔记本电脑,适合大一新生的笔记本电脑排行榜2020_大一新生适合什么笔记本电脑...
  18. opencv无法打开摄像头
  19. 大学生活快要结束了,才想要珍惜~~~
  20. 读书笔记 - -《Python网络编程》重点

热门文章

  1. Directory /opt/journalnode/lagou is in an inconsistent state: Can‘t format the storage directo
  2. C1DataGrid for Silverlight 修改 CheckBox 列外观
  3. 正式学习java五天
  4. PostgreSQL中的VACUUM
  5. 转载 Python 学习-Matplotlib库
  6. CSS 样式表引入方法
  7. 淘宝客API示例演示
  8. LeetCode 1052. 爱生气的书店老板
  9. 谷歌浏览器显示菜单栏
  10. 预测:2019年最值得关注的程序语言是什么?