当前位置: 首页 > news >正文

做交通分析的网站免费企业网站建设word

做交通分析的网站,免费企业网站建设word,公众号开发培训,无忧代理 在线分词#xff08;word tokenization#xff09;#xff0c;也叫切词#xff0c;即通过某种方式将句子中的各个词语识别并分离开来#xff0c;使得文本从“字序列”的表示升级为“词序列”表示。分词技术不仅仅适用于中文#xff0c;对于英文、日文、韩文等语言也同样适用。… 分词word tokenization也叫切词即通过某种方式将句子中的各个词语识别并分离开来使得文本从“字序列”的表示升级为“词序列”表示。分词技术不仅仅适用于中文对于英文、日文、韩文等语言也同样适用。 虽然英文中有天然的单词分隔符空格但是常有单词与其他标点黏滞的情况比如Hey, how are you.中的Hey和you是需要与身后的标点分隔开的 目录 为什么需要分词能不能不分词中文分词难在哪从古至今的分词算法词典到预训练从中到外的分词工具为什么需要分词 对于中文来说如果不进行分词那么神经网络将直接基于原始的汉字序列进行处理和学习。然而我们知道一个字在不同的词语中可能含义迥然不同比如“哈哈”与“哈士奇”中“哈”的含义相去甚远如果模型在训练阶段没见过“哈士奇”那么预测的时候就有可能以为“哈士奇”所在的句子在表达欢快的气氛了╮(▽)╭ 显然要解决上述问题的话分词就是了分词之后最小的输入单位就不再是字了而是词由于“哈哈”与“哈士奇”是两个不同的词自然就不会有前面这个问题啦。因此可以认为分词缓解了“一字多义”的问题。 除此之外从特征feature与NLP任务的角度来说字相比词来说是更原始和低级的特征往往与任务目标的关联比较小而到了词级别后往往与任务目标能发生很强的关联。比如对于情感分类任务“我今天走狗屎运了”这句中的每个字都跟正向情感关系不大甚至“狗”这个字还往往跟负面情感密切相关但是“狗屎运”这个词却表达了“幸运”、“开心”、“惊喜”的正向情感因此分词可以看作是给模型提供了更high-level、更直接的feature丢给模型后自然容易获得更佳的表现。 能不能不分词 答案是当然可以。从前面分词的目的可以看出只要模型本身能够学习到字的多义性并且自己学到由字组词的规律那么就相当于隐含的内置了一个分词器在模型内部这时候这个内置的分词器是与解决目标任务的网络部分一起“端到端训练”的因此甚至可能获得更佳的性能。 然而从上面这段的描述也能看出要满足这个条件是很难得的。这需要训练语料非常丰富且模型足够大可以有额外容量来内置一个隐含的分词模型才有可能获得比“分词器词级模型“更好的表现。这也是为什么BERT等大型预训练模型往往是字级别的完全不需要使用分词器。 此外分词也并不是百利而无一害的一旦分词器的精度不够高或者语料本身就噪声很大错字多、句式杂乱、各种不规范用语这时强行分词反而容易使得模型更难学习。比如模型终于学会了“哈士奇”这个词却有人把哈士奇打成了“蛤士奇”结果分词器没认出来把它分成了“蛤”、“士”、“奇”这三个字这样我们这个已经训练好的“word level模型”就看不到“哈士奇”了毕竟模型训练的时候“哈士奇”是基本单位。 中文分词难在哪 1 歧义问题 首先前面提到分词可以缓解“一字多义”的问题但是分词本身又会面临“切分歧义”的问题。例如切分书名《无线电法国别研究》   虽然切分成《无线电/法国/别/研究》看起来没毛病但是考虑到这是个书名显然正解《无线电法/国别/研究》对分词器来说太南了( ́︿ ̀)而如果不告诉你这是一个书名显然两种切分方式看起来都没毛病。 2 未登录词问题 此外中文词典也是与时俱进的例如“青青草原”、“累觉不爱”等网络词在10年前是没有的今天训练的分词器也一定会在不久的将来遇到不认识的词即“未登录词”out-of-vocabulary word那个时候分词器很容易因为“落伍”而出现切分错误。 3 规范问题 最后分词时的切分边界也一直没有一个确定的规范。尽管在 1992 年国家颁布了《信息处理用现代词汉语分词规范》但是这种规范很容易受主观因素影响在实际场景中也难免遇到有所不及的问题。 算法篇 1 基于词典 对于中文分词问题最简单的算法就是基于词典直接进行greedy匹配。 比如我们可以直接从句子开头的第一个字开始查字典找出字典中以该字开头的最长的单词然后就得到了第一个切分好的词。比如这句“夕小瑶正在讲NLP”查字典发现“夕小瑶”是最长的词了于是得到 夕小瑶/ 正在讲NLP 然后从下一个词的开头开始继续匹配字典发现“正在”就是最长的词了于是 夕小瑶/正在/ 讲NLP 依此类推最终得到 夕小瑶/正在/讲/NLP 这种简单的算法即为前向最大匹配法FMM 虽然做法很朴素但是名字听起来还有点高端╮(╯▽╰)╭ 不过由于中文句子本身具有重要信息后置的特点从后往前匹配的分词正确率往往要高于从前往后于是就有了反向进行的“后向最大匹配法BMM”。当然了无论是FMM还是BMM都一定存在不少切分错误因此一种考虑更周到的方法是“双向最大匹配”。 双向最大匹配算法是指对待切分句子分别使用FMM和RMM进行分词然后对切分结果不重合的歧义句进行进一步的处理。通常可对两种方法得到的词汇数目进行比较根据数目的相同与否采取相应的措施以此来降低歧义句的分词错误率. 2 基于统计 2.1 基于语言模型 基于词典的方法虽然简单但是明显能看出来太不智能了稍微复杂一些的句子例如“没关系除夕小瑶在家做饭。”这时候如果使用后向最大匹配法就会切分成“没关系//除/夕小瑶/在家/做饭/。”这明显错的很不可原谅。 犯这种错误的根本原因在于基于词典的方法在切分时是没有考虑词语所在的上下文的没有从全局出发找最优解。其实上面这个句子无非就是在纠结两种切分方式 a. 没关系//除/夕小瑶/在家/做饭/。 b. 没关系//除夕/小瑶/在家/做饭/。 我们日常说话中很少会有人说出“没关系//除/xxxx/做饭/。”这种句子而第二个句子出现的频率则会非常高比如里面的“小瑶”可以替换成“我”、“老王”等。显然给定一个句子各种切分组合是数量有限的如果有一个东西可以评估出任何一个组合的存在合理性的分值那么不就找到了最佳的分词组合嘛 所以这种方法的本质就是在各种切词组合中找出那个最合理的组合这个过程就可以看作在切分词图中找出一条概率最大的路径   而这个可以给词序列存在合理性打分的东西就叫做“语言模型”language model。这种利用语言模型来评估各种切分组合的方法是不是就显得智能多啦╮(╯▽╰)╭给定一个句子分词后得到的单词序列{w1,w2...wm}语言模型就能计算出这个句子或者说词序列存在的可能性 这个表达式可通过链式法则进行展开   显然当m取值稍微一大乘法链的后面几项会变得非常难计算估计出这几项的概率需要依赖极其庞大的语料才能保证估计误差可接受。计算困难怎么办当然是用合理的假设来简化计算比如我们可以假设当前位置取什么词仅取决于相邻的前面n个位置即   这种简化的语言模型就称为n-gram语言模型。这样乘法链中的每个乘子都可以在已经完成人工标注的分词语料中计算得到啦。当然了在实际计算中可能还会引入一些平滑技巧来弥补分词语料规模有限导致的估计误差这里就不展开讲啦。 2.2 基于统计机器学习 NLP是一门跟机器学习强绑定的学科分词问题自然也不例外。中文分词同样可以建模成一个“序列标注”问题即一个考虑上下文的字分类问题。因此可以先通过带标签的分词语料来训练一个序列标注模型再用这个模型对无标签的语料进行分词。 样本标签 一般用{B:begin, M:middle, E:end, S:single}这4个类别来描述一个分词样本中每个字所属的类别。它们代表的是该字在词语中的位置。其中B代表该字是词语中的起始字M代表是词语中的中间字E代表是词语中的结束字S则代表是单字成词。 一个样本如下所示 人/b 们/e 常/s 说/s 生/b 活/e 是/s 一/s 部/s 教/b 科/m 书/e 之后我们就可以直接套用统计机器学习模型来训练出一个分词器啦。统计序列标注模型的代表就是生成式模型的代表——隐马尔可夫模型HMM和判别式模型的代表——线性链条件随机场CRF。已经对这两个模型很熟悉的小伙伴可以跳过。 隐马尔可夫模型HMM) HMM模型的详细介绍见 《如果你跟夕小瑶恋爱了... (上)》 / 《下》 在了解了HMM模型的基本概念之后我们来看看HMM模型是如何进行分词的吧~基本思路将分词问题转换为给每个位置的字进行分类的问题即序列标注问题。其中类别有4个前面讲到的B、M、E、S。给所有的位置分类完成后便可以根据类别序列得到分词结果啦。 举个栗子 我们的输入是一个句子: 小Q硕士毕业于中国科学院 通过算法我们成功预测出各个字位对应的分词标签 BEBEBMEBEBME 根据这个状态序列我们可以进行切词: BE/BE/BME/BE/BME 所以切词结果如下: 小Q/硕士/毕业于/中国/科学院 那么问题又来了假如一个完美的HMM分词模型给你了那么如何用这个模型对输入的字序列进行序列标注呢首先看下HMM模型中的两个核心概念观测序列和状态序列。 观测序列就是我可以直接看到的序列也就是“小Q硕士毕业于中国科学院”这个字序列而状态序列则是不能通过肉眼直接观察到的内在序列也就是上面这句话所对应的标注结果“BEBEBMEBEBME”而我们的HMM模型就可以帮助我们完成从观测序列-状态序列的华丽变身 用数学抽象表示如下用 代表输入的句子n为句子长度 表示字 代表输出的标签那么理想的输出即为     3 基于神经网络 众所周知深度学习已经成功占领NLP席卷了NLP中的分类、序列标注和生成问题。如前所述分词也可以建模为序列标注问题那么擅长处理序列数据的LSTM长短时记忆网络和最近超级火的预训练模型同样可以用于中文分词。 3.1 基于(Bi-)LSTM 对LSTM模型还不熟悉的小伙伴见小夕以前写的这篇的《step-by-step to LSTM》本文对lstm的基本理论不再赘述啦。 如前面语言模型一节中所述字的上下文信息对于排解切分歧义来说非常重要能考虑的上下文越长自然排解歧义的能力就越强。而前面的n-gram语言模型也只能做到考虑一定距离的上下文那么有没有在理论上能考虑无限长上下文距离的分词模型呢答案就是基于LSTM来做。当然啦LSTM是有方向的为了让每个位置的字分类时既能考虑全部历史信息左边的所有的字又能考虑全部未来信息右边所有的字我们可以使用双向LSTMBi-LSTM来充当序列标注的骨架模型如图   LSTM完成对每个位置的上下文信息的编码后最终通过softmax分类层完成对每个位置的分类从而跟HMM和CRF一样完成了基于序列标注的中文分词。 3.2 基于预训练模型知识蒸馏 最近的一年多的时间里BERT、ERNIE、XLNet等大型预训练席卷了NLP的绝大部分领域在分词问题上也有显著的优越性。   然而众所周知预训练模型太大了过于消耗计算资源如果要对海量的文本进行分词哪怕用上8卡的32G Tesla V100都会显得力不从心因此一种解决方案就是将预训练模型中的分词知识通过知识蒸馏Knowledge Distillation来迁移到小模型比如LSTM、GRU上。近期Jieba分词器中就上线了这么一个用这种方法得到的先进分词模型其实是个通用的词法分析模型感兴趣的小伙伴可以自行了解一下。预训练模型和知识蒸馏的资料很多了这里就不赘述啦。   工具篇 下面列了几个较为主流的分词工具排名不分先后大家自行试用相关的paper请在订阅号「夕小瑶的卖萌屋」后台回复【中文分词】领取。 1 Jieba 说到分词工具第一个想到的肯定是家喻户晓的“结巴”中文分词主要算法是前面讲到的基于统计的最短路径词图切分近期还内置了百度飞桨的预训练模型大规模蒸馏的前沿分词模型。 github项目地址https://github.com/fxsjy/jieba   2 THULACTHU Lexical Analyzer for Chinese 由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包具有中文分词和词性标注功能。该工具所采用的分词模型为结构化感知机。更多算法细节请参考github项目和阅读论文原文。 github项目地址https://github.com/thunlp/THULAC 论文链接https://www.mitpressjournals.org/doi/pdf/10.1162/coli.2009.35.4.35403 使用示例 #THULAC #pip install thulac import thulacsentence 不会讲课的程序员不是一名好的算法工程师 thu1 thulac.thulac(seg_onlyTrue) #只分词 text thu1.cut(sentence, textTrue) #进行一句话分词 print(THULAC: text)#output #Model loaded succeed #THULAC: 不 会 讲课 的 程序员 不 是 一 名 好 的 算法 工程师   3 NLPIR-ICTCLAS汉语分词系统 北京理工大学海量语言信息处理与云计算工程研究中心大数据搜索与挖掘实验室 Big Data Search and Mining Lab.BDSMBIT发布。是基于层次HMM的分词库将分词、POS、NER等都纳入到了一个层次HMM的框架之下联合训练得到。 主页http://ictclas.nlpir.org/github 项目地址https://github.com/tsroten/pynlpir 使用示例 #NLPIR-ICTCLAS #pip install pynlpir import pynlpirsentence 不会讲课的程序员不是一名好的算法工程师 pynlpir.open() tokens [x[0] for x in pynlpir.segment(sentence)] print(NLPIR-TCTCLAS: .join(tokens)) pynlpir.close()#output #NLPIR-TCTCLAS: 不 会 讲课 的 程序员 不 是 一 名 好 的 算法 工程   4 LTP 哈工大出品同THULAC一样LTP也是基于结构化感知器Structured Perceptron, SP以最大熵准则学习的分词模型。 项目主页:https://www.ltp-cloud.com/github 项目地址https://github.com/HIT-SCIR/ltp 论文链接http://jcip.cipsc.org.cn/CN/abstract/abstract1579.shtml 使用示例使用前需下载分词模型http://ltp.ai/download.html 5 HanLP HanLP是随《自然语言处理入门》配套开源的一系列NLP算法库。除了经典的1.x版本在不断迭代更新以外今年还全新推出了2.0版本。1.x版本有有基于词典的分词工具和基于CRF的切词模型。2.0版本开源了基于深度学习算法的分词工具。 1.x版本 github项目地址https://github.com/hankcs/pyhanlp 2.0版本 github地址https://github.com/hankcs/HanLP/tree/doc-zh 使用示例要求Python 3.6以上使用 #HanLP #v2.0 #pip install hanlp import hanlpsentence 不会讲课的程序员不是一名好的算法工程师 tokenizer hanlp.load(PKU_NAME_MERGED_SIX_MONTHS_CONVSEG) tokens tokenizer(sentence) print(hanlp 2.0: .join(tokens)) #output #hanlp 2.0: 不 会 讲课 的 程序员 不 是 一 名 好 的 算法 工程   6 Stanford CoreNLP 斯坦福推出的切词工具可以支持多种语言。算法核心是基于CRF模型。 github项目地址https://github.com/Lynten/stanford-corenlp 论文链接https://nlp.stanford.edu/pubs/sighan2005.pdf 使用示例需要先从stanford官网下载中文切词模型https://stanfordnlp.github.io/CoreNLP/ ###stanford CoreNLP #pip install stanfordcorenlp from stanfordcorenlp import StanfordCoreNLPsentence 不会讲课的程序员不是一名好的算法工程师 with StanfordCoreNLP(rstanford-chinese-corenlp-2018-10-05-models, langzh) as nlp:print(stanford: .join(nlp.word_tokenize(sentence)))
http://www.zqtcl.cn/news/496217/

相关文章:

  • 哪个网站不花钱可以做招聘wordpress没有页脚
  • 免费视频网站素材网络系统管理技能大赛
  • 聊天网站建设网站建设毕业设计评价
  • 网站建设 内容缺乏域名备案要多久
  • 产品展示型网站建设全国新冠疫苗接种率
  • 网站建设商如何自建商城和电商平台
  • 深圳做二类学分的网站开发一平方米多少钱
  • 如何做原创小说网站建一个o2o网站
  • 东莞市住房建设网站互动科技 网站建设
  • 淄博网站建设高端网络seo线上培训多少钱
  • s网站优化工地模板图片
  • 手机网站使用微信支付神级网页设计网站
  • 网站建站大约多少钱如何引流被动加好友
  • 哪些网站可以查企业信息大城县有做网站的吗
  • 上海网站建设电影联wordpress 分类title
  • 杭州网站建设招标免费seo排名优化
  • 网站建设服务费是否无形资产百度一下你就知道官网下载安装
  • 网站付款链接怎么做在线设计商标logo
  • 阿里巴巴做网站多少钱特大新闻凌晨刚刚发生
  • 网站如何做se设计师网站pintset
  • 上海网站制作机构wordpress 优酷免广告
  • 关于网站建设的名言网站开发的技术难点
  • 免费云建站廊坊seo外包
  • 个人网站建设方案书用备案的衡水市网站制作
  • 教育网站的建设品牌营销型网站作用
  • 金凤区建设交通局网站做洗衣液的企业网站
  • 南阳网站优化手机咋做网站
  • 做网站多少钱一年没有网站做cpa怎么赚钱
  • 二手房发布网站怎么做建站哪家好用兴田德润
  • 网站开发有几种深圳网站制作长沙