英文分词的算法和原理
转载:http://itindex.net/detail/48243-%E8%8B%B1%E6%96%87-%E5%88%86%E8%AF%8D-%E7%AE%97%E6%B3%95?utm_source=tuicool&utm_medium=referral
根据文档相关性计算公式
- TF-IDF: http://lutaf.com/210.htm
- BM25: http://lutaf.com/211.htm
分词质量对于基于词频的相关性计算是无比重要的
英文(西方语言)语言的基本单位就是单词,所以分词特别容易做,只需要3步:
- 根据空格/符号/段落 分隔,得到单词组
- 过滤,排除掉stop word
- 提取词干
第一步:按空格/符号分词
用正则表达式很容易
pattern = r'''(?x) # set flag to allow verbose regexps([A-Z]\.)+ # abbreviations, e.g. U.S.A.| \w+(-\w+)* # words with optional internal hyphens| \$?\d+(\.\d+)?%? # currency and percentages, e.g. $12.40, 82%| \.\.\. # ellipsis| [][.,;"'?():-_`] # these are separate tokens'''
re.findall(pattern,待分词文本)
第二步:排除stop word
stopword就是类似 a/an/and/are/then
的这类高频词,高频词会对基于词频的算分公式产生极大的干扰,所以需要过滤
第三步:提取词干
词干提取( Stemming) 这是西方语言特有的处理,比如说英文单词有 单数复数的变形,-ing和-ed的变形,但是在计算相关性的时候,应该当做同一个单词。比如 apple和apples,doing和done是同一个词,提取词干的目的就是要合并这些变态
Stemming有3大主流算法
- Porter Stemming
- Lovins stemmer
- Lancaster Stemming
Lucene 英文分词自带了3个stemming算法,分别是
- EnglishMinimalStemmer
- 著名的 Porter Stemming
- KStemmer
词干提取算法并不复杂,要么是一堆规则,要么用映射表,编程容易,但是必须是这种语言的专家,了解构词法才行啊
http://text-processing.com/demo/stem/ 是一个在线试验词干提取算法的网站
Lemmatisation
Lemmatisation是和词干提取(Stemming) 齐名的一个语言学名词,中文可以叫做 词形还原 ,就是通过查询字典,把 "drove" 还原到 "drive"
而stemming会把单词变短,"apples","apple"处理之后都变成了 "appl"
- wikipedia关于词形还原的简介
- European languages lemmatizer 一个c语言的lib
做计算机语言学研究才会涉及到lemmatization,我个人觉得做搜索完全可以不考虑,Stemming已经可以解决大问题了
参考
- http://text-processing.com/
- www.nltk.org python的自然语言包,非常有用
- PYTHON自然语言处理中文版.pdf
英文分词的算法和原理相关推荐
- c语言英文分词,英文分词的算法和原理
英文分词的算法和原理 根据文档相关性计算公式 分词质量对于基于词频的相关性计算是无比重要的 英文(西方语言)语言的基本单位就是单词,所以分词特别容易做,只需要3步: 根据空格/符号/段落 分隔,得到单 ...
- 【NLP】为什么中文分词比英文分词更难?有哪些常用算法?(附代码)
导读:人类文明的重要标志之一是语言文字的诞生.数千年来,几乎人类所有知识的传播都是以语言和文字作为媒介. 自然语言处理是使用计算机科学与人工智能技术分析和理解人类语言的一门学科.在人工智能的诸多范畴中 ...
- 为什么中文分词比英文分词更难?有哪些常用算法?(附代码)
导读:人类文明的重要标志之一是语言文字的诞生.数千年来,几乎人类所有知识的传播都是以语言和文字作为媒介. 自然语言处理是使用计算机科学与人工智能技术分析和理解人类语言的一门学科.在人工智能的诸多范畴中 ...
- NLP考题:为什么中文分词比英文分词更难?有哪些常用算法?(附代码)
导读:人类文明的重要标志之一是语言文字的诞生.数千年来,几乎人类所有知识的传播都是以语言和文字作为媒介. 自然语言处理是使用计算机科学与人工智能技术分析和理解人类语言的一门学科.在人工智能的诸多范畴中 ...
- python 英语分词_英文分词算法(Porter stemmer)
python金融风控评分卡模型和数据分析微专业课(博主亲自录制视频):http://dwz.date/b9vv 最近需要对英文进行分词处理,希望能够实现还原英文单词原型,比如 boys 变为 boy ...
- (1)英文分词——波特词干提取算法
英文分词相比中文分词要简单得多,可以根据空格和标点符号来分词,然后对每一个单词进行词干还原和词形还原,去掉停用词和非英文内容.词干还原算法最经典的就是波特算法(Porter Algorithm官网ht ...
- 大数据搜索引擎原理分析——设计并实现一个中文分词的算法
实验报告下载链接: https://download.csdn.net/download/qq_37636795/16337679 南华大学 计算机科学与技术学院 实验报告 ( 2020 ~2021 ...
- 英文分词算法(Porter stemmer)
英文分词算法(Porter stemmer) 主要可以实现单词原型的还原,官网http://tartarus.org/~martin/PorterStemmer/ 一些词汇的处理结果:http://s ...
- hash算法_到底什么是Hash?Hash算法的原理和实际应用讲解
提到hash,相信大多数同学都不会陌生,之前很火现在也依旧很火的技术区块链背后的底层原理之一就是hash,下面就从hash算法的原理和实际应用等几个角度,对hash算法进行一个讲解. 1.什么是Has ...
- NLP-中文、英文分词
文章目录 前言 英文分词方法 1.古典分词方法 2.基于子词的分词方法(Subword Tokenization) 2.1 BPE 2.2 WordPiece 2.3 Unigram Language ...
最新文章
- 【摄像头】摄像头IRCUT滤光片
- yanf4j引入了客户端非阻塞API
- 阿里前员工跳槽后曝光薪资截图:新公司月入五万多,很满足!
- 什么是回归分析(regression analysis)?有哪些类型的回归分析(regression analysis)?
- 为什么航空发动机那么难造?看看3D工作原理
- eclipse运行 Maven Test命令时控制台输出乱码的解决办法
- python运行卡死_快速解决jupyter启动卡死的问题
- 目标检测领域还有什么可做的?19 个方向给你建议
- System.Math.Min(System.Threading.Interlocked.Increment(i), i - 1)
- 攀枝花a货翡翠,晋城a货翡翠
- python selenium 下拉列表_Selenium+Python之下拉菜单的定位
- 摊牌了!2021年3D视觉算法岗求职群
- BZOJ5219[Lydsy2017省队十连测] 最长路径
- centos7镜像文件
- 微信小说域名被封-366tool在线解答微信屏蔽小说网页停止访问的解决方案
- xp桌面计算机在哪个文件夹,windows桌面文件路径 windows xp 桌面文件默认存放路径...
- 局域网中别人不能访问我的电脑
- NBA底层球员的活法
- word将参考文献序号改为上标
- Jenkins安装、配置、构建、脚本、配置邮箱、上传fir
热门文章
- PHP开发工资条短信通知
- 欧姆龙PLC CP1H与变频器通信要点总结
- 上三角、下三角、对称矩阵
- 三妈式初音miku_【MMD模型】三妈式初音 Appearance Miku 原版
- 浅谈C#tabcontrol应用
- HDFS之存储优化纠删码原理、纠删码案例实操 、异构存储(冷热数据分离)
- Failed to parse XML
- html 获取浏览器宽高,js获取浏览器高度与宽度的方法
- matlab符号运算求二阶微分方程,matlab二阶微分方程求解x 0.2x 0.4x=0.2u(t)
- creo绘图属性模板_creo完整制作工程图模板.docx