N-Gram 分词算法 Python 实现

article/2025/10/18 5:09:31

概述

N-Gram 算法是一种单词级别的窗口取词算法,N-Gram(有时也称为N元模型)是自然语言处理中一个非常重要的概念,通常在NLP中,人们基于一定的语料库,可以利用N-Gram来预计或者评估一个句子是否合理。另外一方面,N-Gram的另外一个作用是用来评估两个字符串之间的差异程度。这是模糊匹配中常用的一种手段。

N-Gram 算法具体过程:

  • 过滤掉文本数据中的标点符号和其他特殊字符;

  • 对所有单词执行小写转换,并删除单词之间的空格、换行符等标志位;

  • 使用长度为 N 的窗口对文本内容执行字符级滑动取词,将结果存入有序列表。

如下图所示
在这里插入图片描述
程序分为两步:文本过滤、滑动取词

文本过滤

def text_filter(text: str) -> str:"""文本过滤器:过滤掉文本数据中的标点符号和其他特殊字符:param text: 待过滤的文本:return: 过滤后的文本"""result = str()for t in text:if t.isalnum():if t.isalpha():t = t.lower()result += str(t)return result

滑动取词

def slide_word(text: str, l: int = 5) -> list:"""滑动取词器Input: text='abcd',l=2Output: ['ab','bc','cd']:param text: 过滤后的文本 (只包含小写数字/字母):param l: 滑动窗口长度,默认为 5:return:"""tf = text_filter(text)result = list()if len(tf) <= l:result.append(tf)return resultfor i in range(len(tf)):word = tf[i:i + l]if len(word) < l:breakresult.append(word)return result

测试

if __name__ == '__main__':banner = 'abcdefghigkLMN*^%$*   \r\n)021'print(slide_word(banner))

输出

['abcde', 'bcdef', 'cdefg', 'defgh', 'efghi', 'fghig', 'ghigk', 'higkl', 'igklm', 'gklmn', 'klmn0', 'lmn02', 'mn021']

http://chatgpt.dhexx.cn/article/HIMQklwU.shtml

相关文章

ElasticSearch学习随笔之分词算法

ElasticSearch 1、ElasticSearch学习随笔之基础介绍 2、ElasticSearch学习随笔之简单操作 3、ElasticSearch学习随笔之java api 操作 4、ElasticSearch学习随笔之SpringBoot Starter 操作 5、ElasticSearch学习随笔之嵌套操作 6、ElasticSearch学习随笔之分词算法 7、ElasticS…

常用分词算法笔记

常用统计语言模型&#xff0c;包括了N元文法统计模型&#xff08;N-gram Model&#xff09;、隐马尔科夫模型&#xff08;Hidden Markov Model&#xff0c;简称HMM&#xff09;、最大熵模型&#xff08;Maximum Entropy Model&#xff09;。 N-Gram这是一种依赖于上下文环境的词…

NLP 中文分词-双向匹配算法(理论+Python实现)

一、理论描述 1.中文分词的概念&#xff1a; 是指把没有明显分界标志的字串切分为词串&#xff0c;包括标点符号、数字、数学符号、各种标记、人名、地名、机构名等未登录词的识别。汉语自动分词主要包括&#xff1a;&#xff08;1&#xff09;根据分词规范&#xff0c;建立机…

NLP ---分词详解(常见的五种分词技术二)

上一篇我们讲了N一最短路径方法、基于词的n元文法模型&#xff0c;本节将主要介绍由字构词方法、基于词感知机算法的汉语分词方法、基于字的生成模型和区分式模型相结合的汉语分词方法&#xff0c;下面我们就开始讲解由字构词的方法&#xff1a; 由字构词方法 由字构词方法的…

常用分词算法总结(字典、统计、神经网络)

本文转载自公众号“夕小瑶的卖萌屋”&#xff0c;专业带逛互联网算法圈的神操作 -----》我是传送门 关注后&#xff0c;回复以下口令&#xff1a; 回复【789】 &#xff1a;领取深度学习全栈手册&#xff08;含NLP、CV海量综述、必刷论文解读&#xff09; 回复【入群】&#xf…

分词算法----正向和逆向最大匹配算法(含Python代码实现)

文章目录 分词算法(Segmentation Method)最大匹配算法(Maximum Matching)需要的前提正向最大匹配算法(Forwards Maximum Match&#xff0c;FMM)逆向最大匹配算法(Reverse Maximum Match&#xff0c;RMM)双向最大匹配算法小结 分词算法(Segmentation Method) 在文本处理流程中&…

自然语言处理——分词算法

引言 分词是自然语言处理中的基本操作&#xff0c;今天我们就来看一下常用的分词算法及实现。 最大匹配算法 所谓的最大匹配指的是匹配最长的单词&#xff0c;通常会指定一个最大长度。根据搜索顺序的不同&#xff0c;主要有前向最大匹配算法、后向最大匹配算法、双向匹配算…

分词算法介绍——千里之行,始于足下

NLP&#xff08;自然语言处理&#xff09;&#xff0c;对于它来说&#xff0c;如何有效地编码一段文本&#xff0c;是它首先要考虑的问题。而在编码文本之前&#xff0c;要先把它切割成小块&#xff0c;这些小块叫做 tokens&#xff0c;这个过程叫做分词&#xff08;tokenizati…

C#分词算法

C#分词算法 分词算法的正向和逆向非常简单&#xff0c;设计思路可以参考这里: 中文分词入门之最大匹配法 我爱自然语言处理 http://www.52nlp.cn/maximum-matching-method-of-chinese-word-segmentation 正向最大匹配&#xff0c;简单来说&#xff0c;就是分词的时候&#xf…

windows10家庭版打开组策略

目录 一、新建文本文件&#xff0c;输入以下内容二、鼠标右键单击&#xff0c;以管理员身份运行三、验证 windows10家庭版默认没有放开组策略&#xff0c;可以通过以下方法添加。 一、新建文本文件&#xff0c;输入以下内容 echo offpushd "%~dp0"dir /b C:\Window…

【Windows】Win10家庭版启用组策略gpedit.msc

转载请注明出处&#xff0c;原文链接&#xff1a;https://blog.csdn.net/u013642500/article/details/80138799 【前言】 大家都认为&#xff0c;Windows 10家庭版中并不包含组策略&#xff0c;其实不然&#xff0c;它是有相关文件的&#xff0c;只是不让你使用而已。那么我们让…

win10(家庭版)打开本地组策略失败的处理方法

win10&#xff08;家庭版&#xff09;打开本地组策略失败的处理方法 1 新建TXT文件 将下列代码复制粘贴到txt中&#xff1a; echo off pushd “%~dp0” dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt…

win10找不到组策略,解决方法

win10找不到组策略&#xff0c;可以用以下办法开启权限&#xff1a; 1.winr 唤出运行&#xff0c;输入notepad创建记事本&#xff1b; 2.输入以下代码并另存为gpedit.bat&#xff1b; echo offpushd "%~dp0"dir /b %systemroot%\Windows\servicing\Packages\Micros…

如何停止Monkey测试

当我们运行Monkey测试时&#xff0c;命令发出之后&#xff0c;手机便开始执行monkey命令了。Monkey命令具体用法如下图所示&#xff1a; 网上大部分人认为monkey开始测试之后&#xff0c;就不能停止&#xff0c;除非时间数执行完成&#xff0c;或者在cmd窗口执行adb reboot来进…

Android的monkey测试

Android SDK中的android调试桥&#xff08;adb&#xff09;shell里&#xff0c;有一个用于测试的工具——monkey。不知道最早monkey这个名字的来历&#xff0c;不过他确实如同一只调皮的猴子&#xff0c;在android app里各种乱按、乱晃、乱摸。 如何使用&#xff1a;进入命令行…

android测试-monkey测试

文章目录 前言一、为什么Monkey测试二、什么是Monkey测试三、如何做monkey测试 前言 Monkey 测试是通过向系统发送伪随机的用户事件流&#xff08;如按键输入、触摸屏输入、手势输入等&#xff09;&#xff0c;实现对应用程序客户端的稳定性测试&#xff1b; 通俗来说&#xf…

Monkey测试工具使用

目录 1.monkey测试原理 2.Monkey启动架构图 3.Monkey为什么是Android测试工具原理解析 4.Monkey命令 5.Monkey日志分析 1.monkey测试原理 monkey是向系统发送一系列的伪随机的用户事件流&#xff0c;这些事件流包括&#xff1a;按键输入、触摸屏输入、手势输入。实现对应用程…

Android Monkey测试入门:安装sdk、studio、模拟器,并分析monkey日志

Android Monkey测试入门&#xff1a;安装sdk、studio、模拟器&#xff0c;并分析monkey测试报告结果 1. 安装Java JDK和android SDK2. 安装Andriod studio及模拟器3. 在模拟器上运行monkey测试3.1 手动植入简单缺陷 4. 分析monkey报告结果信息4.1 标准流4.2 错误流 5. 导出ANR文…

python+monkey实现app的monkey测试

目标&#xff1a; 使用monkey对当前windows电脑连接的一个或者多个手机设备&#xff0c;完成对某个app的monkey测试&#xff0c;输出monkey日志以及monkey脚本。思路&#xff1a; 通过terminal交互控制台&#xff0c;获取测试的app以及可以测试的设备。将获取的参数和固定的mo…

最全的monkey测试过程及分析

一、首先第一步安装Android SDK&#xff0c;完成后。编写测试脚本&#xff0c;我的脚本已经编写好。具体大家可以从网上Google针对自己的情况再进行详细的编改。 ECHO OFFECHO.:::::::::::::::::::::::::::::::::::::::::::::::::ECHO.:: 分析Monkey日志 …