波特词干(Porter Streamming)提取算法无代码单纯理解
最近写东西提到这个算法,要看一下,结果网上都是直接根据代码解释,对于我这种菜鸟在刚开始看一个算法的时候真心不想直接看代码学。奈何都是各种语言的代码,么得办法。先走了一遍,有了大致的了解,翻译成自己的话,也不知道准不准确,欢迎懂的大佬给我批评指正。
附上官网:https://tartarus.org/martin/PorterStemmer/
一、先把单词按下述规则整理成“CV”的格式
我们假设,"C"代表一连串辅音字母,“V”代表一连串元音字母。所以,是所有单词都可以用四种字母组合来表示:
CVCV……C
CVCV……V
VCVC……C
VCVC……V
用[ ]表示可选,即有或没有均可。则四种形式可以归纳为:
[C]VCVCVC……[V]
用m表示辅音串“C”的个数,进而可以将上述形式转化为:
[C]VC{m}[V]
这样,我们就可以将每个单词都写成这种形式。
二、明确提取词干的规则
链接:https://blog.csdn.net/zhanghaiyang9999/article/details/41628789
*S -词干以S结束 (同样适用于其他字符).
*v* - 词干包含一个元音.
*d - 词干以两个相同辅音结束(如. -TT, -SS).
*o - 词干以cvc的形式结束, 但是第二个c(辅音)不是 W, X 或者Y (如 -WIL, -HOP).
这些条件可以用AND,OR和NOT来运算,但只选择符合最长的一种,例如:
SSES -> SS AND
IES -> I AND
SS -> SS AND
S ->
classes->class而不是classe,因为它会选择最长的匹配规则。
另外,步骤一中提到的m也会作为条件规则的一部分。
三、加入合适条件取出后缀
(condition) S1 -> S2
(condition) 是s1的条件,假如s1满足(condition) ,那么就转化为s2。(condition) 由步骤二中的规则和逻辑连接词AND,OR和NOT构成。
我理解的大致步骤就是这样,然后就要看代码了,以后发现有错误再改喽。
波特词干(Porter Streamming)提取算法无代码单纯理解的更多相关文章
- 经典面试题(二)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
1.正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,需要计算出Q中的前几项, 例如,当a=3,b=5,N=6时,序列为3,5,6,9,10,12 (1).设计一个函数void ...
- TextRank:关键词提取算法中的PageRank
很久以前,我用过TFIDF做过行业关键词提取.TFIDF仅仅从词的统计信息出发,而没有充分考虑词之间的语义信息.现在本文将介绍一种考虑了相邻词的语义关系.基于图排序的关键词提取算法TextRank [ ...
- 关键词提取算法TextRank
很久以前,我用过TFIDF做过行业关键词提取.TFIDF仅仅从词的统计信息出发,而没有充分考虑词之间的语义信息.现在本文将介绍一种考虑了相邻词的语义关系.基于图排序的关键词提取算法TextRank. ...
- 关键字提取算法TF-IDF和TextRank(python3)————实现TF-IDF并jieba中的TF-IDF对比,使用jieba中的实现TextRank
关键词: TF-IDF实现.TextRank.jieba.关键词提取数据来源: 语料数据来自搜狐新闻2012年6月—7月期间国内,国际,体育,社会,娱乐等18个频道的新闻数据 数据处 ...
- PIE SDK水深提取算法
1.算法功能简介 水深提取算法就是根据输入的水位设为d,dem设为h 这两个数据做一个差值运算,则水深计算公式为d-h;本示例中的是基于洞庭湖提取的水体矢量文件的范围来计算dem和水位25米的差值. ...
- 关键词提取算法TF-IDF与TextRank
一.前言 随着互联网的发展,数据的海量增长使得文本信息的分析与处理需求日益突显,而文本处理工作中关键词提取是基础工作之一. TF-IDF与TextRank是经典的关键词提取算法,需要掌握. 二.TF- ...
- Salesforce吹嘘无代码开发,不用费脑子的人工智能
Salesforce在星期四举办的Dreamforce '16大会上,开发人员主题演讲可谓面面俱到--听众被舞台包围了,而不是远远地坐在观众席. 这是符合该公司在六月份第一次的开发者大会Trailhe ...
- 难道ERP"死了",中台"凉了",低/无代码要称王了?
业内有一种说法,ERP经历了20多年的发展,其理念已经行不通,跟不上时代.后起之秀"中台"经历了崛起.走红.被传唱等阶段.并且已经冷却下来.此外,随着市场的不断变化,"低 ...
- 第2-2-4章 常见组件与中台化-常用组件服务介绍-分布式ID-附Snowflake雪花算法的代码实现
目录 2.3 分布式ID 2.3.1 功能概述 2.3.2 应用场景 2.3.3 使用说明 2.3.4 项目截图 2.3.5 Snowflake雪花算法的代码实现 2.3 分布式ID 2.3.1 功能 ...
随机推荐
- 使用openoffice转pdf,详细
期由于项目的需求,需要word文档转pdf在线预览,由于一直没有接触这块,所以花了将近四天时间才弄明白. 写这篇文章的主要目的是加深自己的记忆,同时方便以后在用. (最近有使用了这个功能,发现这篇文章 ...
- Spring-RabbitMQ实现商品的同步(后台系统)
1.配置rabbitMQ 需要把以上配置文件加载到spring容器,在appliacationContext.xml中添加如下内容: 注意:无需配置监听,因为服务器端(生产者只需要将消息发送到交换机即 ...
- 2017.11.8 Noip2017 考前模拟赛
----------------------------------T1---------------------------------- ——>足球联赛 题目描述 巴蜀中学新一季的足球联赛开 ...
- jsp 页面 javax.servlet.jsp.JspException cannot be resolved to a type 异常
<dependencies><dependency><groupId>javax.servlet</groupId><artifactId> ...
- Vue自定义日历组件
今天给大家介绍Vue的日历组件,可自定义样式.日历类型及支持扩展,可自定义事件回调.Props数据传输. 线上demo效果 示例 Template: <Calendar :sundayStart ...
- Js 之生成二维码插件(jquery.qrcode.js)
一.下载 链接:https://pan.baidu.com/s/1cMjaCYQ_buZNT5XRRjuNTA提取码:myqm 二.效果图 三.代码 <!DOCTYPE html> < ...
- js 返回两数(包含这两数)之间的随机数函数
function selectFrom( lowerValue, upperValue ){ var choices = upperValue - lowerValue + 1; return Mat ...
- HttpClient学习(一)—— 基本使用
HttpClient是支持Http协议的客户端编程工具包. 一.简单使用 1.1 引入依赖 <dependency> <groupId>org.apache.httpcompo ...
- jquery页面滚动到指定id
//jquery页面滚动到指定id $body = (window.opera) ? (document.compatMode == "CSS1Compat" ? $('html ...
- ISO/IEC 9899:2011 条款6.4.8——预处理数字
6.4.8 预处理数字 语法 1.pp-number: digit . digit pp-number digit pp-number identifier-nondigit pp- ...