C# 一个简单分词程序的思路和代码(三) 键树 插入记录

C#:实现分词算法(附完整源码) 阅读详情

如约定一样,今天放出分词程序的 数据插入代码

首先,我们需要有一个方法查询当前字符在这棵树的地方,如果不存在返回-1,存在返回该记录的索引。

每个字符只到每一层上存在一次

    /// <summary>
        
/// 得到关键词ID号
        
/// </summary>
        
/// <param name="tmpRoot">支点</param>
        
/// <param name="NoteValue">结点值</param>
        
/// <returns>ID号</returns>

        private int FindIndex(List<KeyWordTreeNode> tmpRoot, char NoteValue)
        
{
            
if (tmpRoot.Count  == 0) return -1;
            KeyWordTreeNode TmpNode 
= tmpRoot[0];

            
for (int iCount = 0; iCount < tmpRoot.Count; iCount++)
            
{
                
if (NoteValue ==tmpRoot [iCount ].TreeNode ) return iCount;
              }

            
return -1;

        }

 下面是插入数据的源代码

 

  /// <summary>
        
/// 添加如关键词
        
/// </summary>
        
/// <param name="keyWord">关键词</param>

        public void AddKeyWord(string keyWord)
        
{
            List
<KeyWordTreeNode> tmpRoot = Root.ChildList;
             
for (int iCount = 0; iCount < keyWord.Length; iCount++)
            
{
                
int tmpIndex = FindIndex(tmpRoot, keyWord[iCount]);
                
if (tmpIndex == -1)
                
{
                    KeyWordTreeNode tmpTreeNode 
= new KeyWordTreeNode(keyWord[iCount]);
                    tmpRoot.Add (tmpTreeNode);
                    tmpRoot 
= tmpTreeNode.ChildList;
                }

                
else
                
{
                    tmpRoot 
= tmpRoot[tmpIndex].ChildList;
                }


            }


        }

 

插入的基本思路是:

1、查找当前层是否存在首字符。

2、如果不存在,添加。

3、如果存在,得到索引,并把对象指向该索引的子树,继续查找下一个字符。

4、如果字符串还没结束,跳到第一步继续查询。

以上代码都放在昨天的KeyWordTree类里。明天再放出查找的代码。大家也可以先尝试着做一下。

C#实现中文分词(附完整源码) 阅读详情

相关推荐

C#实现NLP中文分词(附完整源码)

C#实现NLP中文分词(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 594

C#分词算法

本文用到的库下载:点此下载 词库下载:点此下载 将词库直接放到项目根目录 词库设置如下: 类库说明 词库查看程序:点此下载 可以在上面的程序中添加常用行业词库 还可以通过下面的类在程序中实现 完整的盘古release:点此下载 最新字典文件下载位置 http://pangusegment.codeplex.com/releases/view/47411 默认字典...

weixin_34293059的博客 578

分词算法的实现(C#)

在实际应用中,分词算法通常需要考虑更多的语言特性和规则,如中文分词需要考虑词语之间的语义关系,以及特定词汇的处理等。因此,如果需要更高效和准确的分词结果,建议使用现有的成熟分词库或算法。分词是自然语言处理中的重要任务之一,它将一段文本按照一定的规则切分成词语或者字的序列。在本文中,我们将使用C#编程语言来实现一个简单的分词算法。首先,我们需要定义一个分词器的类,其中包含一个方法用于对文本进行分词。方法,该方法接受一个文本字符串作为参数,并返回一个包含分词结果的字符串列表。在上述代码中,我们定义了一个。

PixelProX的博客 502

C# 分词算法,ChineseAnalyzer,源代码分析,其他地方的代码都是稀烂。。。。

1.引用文件下载地址:点击下载2.引用一个Lucene.Net.dll文件3.添加新类库文件 WordTree.csusing System; using System.Collections; using System.IO; using System.Text; using System.Text.RegularExpressions;namespace A.SplitString {

我说我长的不帅,她们说我说谎,还打我。 2060

聊聊C# 中文分词技术

对于更高级的分词需求,可以使用机器学习或深度学习模型进行分词。在C#中实现中文分词技术,通常需要使用一些现成的分词库,因为中文分词相比英文分词更为复杂,需要考虑到词语的边界、歧义等问题。有很多开源的中文分词库可供选择,比如 IKAnalyzer、结巴分词 的C#版本等。对于简单的需求,可以使用正则表达式来进行分词。但请注意,这种方法可能无法处理复杂的中文分词问题,如歧义词、新词发现等。分词结果的质量会直接影响到后续的自然语言处理任务的效果,因此选择合适的分词方法非常重要。2. 使用正则表达式分词。

java专栏 1025

中文分词算法

包括基于统计的贝叶斯算法,和ChineseAnalysis和IKAnalysis开源算法

C#中文分词算法:ChineseAnalyzer

1.首先需要引用 2个dll库文件 Lucene.Net.dll + Lucene.China.dll using Lucene.Net;using Lucene.Net.Analysis;using Lucene.China; 2.还有一个data文件夹需要放在C:\Program Files (x86)\Common Files\microsoft shared\DevServe...

347

C#文章分类程序(基于shootseg中文分词算法、词频分类)

基于ShootSeg开源分词方法、依据词频对文章分类的程序,封装了shootseg.dll和分类match.dll,提供源码,需要的朋友可以借鉴一下!

简单实用的C#分词源代码(含词库素材下载)

一、词库 词库大概有5万多词语(Google能搜到,类似的词库都能用),我摘要如下: 地区 82 重要 81 新华社 80 技术 80 会议 80 自己 79 干部 78 职工 78 群众 77 没有 77 今天 76 同志 76 部门 75 加强 75 组织 75 点击下面链接下载中文词库素材(纯文本文件) http://w

VMLINUZ的专栏 1387

C#实现前向最大匹、字典树(分词、检索)的示例代码

场景:现在有一个错词库,维护的是错词和正确词对应关系。比如:错词“我门”对应的正确词“我们”。然后在用户输入的文字进行错词校验,需要判断输入的文字是否有错词,并找出错词以便提醒用户,并且可以显示出正确词以便用户确认,如果是错词就进行替换。   首先想到的就是取出错词List放在内存中,当用户输入完成后用错词List来foreach每个错词,然后查找输入的字符串中是否包含错词。这是一种有效的方法,并且能够实现。问题是错词的数量比较多,目前有10多万条,将来也会不断更新扩展。所以pass了这种方案,为了让错词查找提高速度就用了字典树来存储错词。 字典树   Trie树,即字典树,又称单词查找树或键

sdio wifi 移植

介绍 简单来说,sdio起源自sd标准,顾名思义就是sd的IO接口(interface)的意思,更具体的说明,sd本来是记忆卡的标准,但是现在也可以把SD卡拿来插上一些外围设备接口使用,这个就是就叫做sdio。 而且sdio本身是一种相当单纯的技术,通过sd的IO引脚来连接外部外围,并且通过sd的IO数据接位与外围传输数据,而且sd协会也推出很完整的sdio stack 驱动程序,使得sdio外围得开发与应用变得非常热门 这里我们要移植的是RTL8822cs的sdio WiFi 模块,将其移植到rk3

Enosji的博客 9610

编写简单的中文分词程序(转载)

几个月之前,在网上找到了一个中文词库素材(几百K),当时便想写一个分词程序了.我对汉语分词没有什么研究,也就凭自己臆想而写.若有相关方面专家,还请多给意见.一、词库 词库大概有5万多词语(google能搜到,类似的词库都能用),我摘要如下: 地区82重要81新华社80技术80会议80自己79干部78职工78群众77没有77今天76同志76部门75加强75组织75 第一列是词,第二列是权重.我...

java-t-go 428

Proteus仿真实战:用STM32F103C8T6输入捕获模式精准测量PWM频率(附完整代码)

本文详细解析了如何在Proteus仿真环境中,利用STM32F103C8T6的输入捕获模式精准测量PWM频率。文章从输入捕获的工作原理、Proteus电路搭建、模块化代码实现到调试优化,提供了完整的实战指南和代码示例,帮助开发者深入理解并掌握这一关键技术。

weixin_29158047的博客 257

『原创』c#下的分词程序(准原创)

前言: 首先,这是我参考 詹卫东老师的ppt讲座,自己写出来的程序语句,只能说是把老人家的思想,用程序语言表达出来而已,注意的是,这个程序只能做中文的分词,因为词库是中文的,算法需要改进一下才能进行英文分词,所以,只能说准原创,下面就给大家一下源码,参考一下: 正文开始:    首先,让我们看下程序运行的效果: 我们以//为结尾标识。   全部代码using System;u...

weixin_34315485的博客 417

MuJoCo 动捕接口 Mocap 直接操控机械臂(附代码)

动作捕捉(Motion Capture,简称 Mocap)是一种记录并处理人或物体动作的技术,在影视、游戏、机器人等领域应用广泛。通过上下左右以及alt_l,alt_r可以控制hand这个hody跟着mocap进行同步,这里将quat固定为Z朝下。首先在 scene.xml 中修改添加 mocap 和 equality。下面介绍如何配置 Mocap 以及使用按键进行末端控制。控制核心代码,通过按键控制mocap的pos和quat。

darcsdn 879

C# 一个简单分词程序的思路和代码(一)

准备把以前的一个分词程序贡献出来,希望给大家一个思路。这个程序我现在已经不用,因为有更好的算法去分,速度更快,所以这个就帮大家起一个抛砖引玉的作用。因为也不是高深的技术,所以就开源了具体使用的结构 用到了键树   词库使用 网上那个假冒的baidu词库慢慢的,每天放一些代码出来,大家可以先了解下键树,这样理解起来更好一些,修改起来也更有思路。这个分词程序分词的速度大概在1w字/秒,

芽芽民工广场 2031

第81篇:Vibe Coding时代:LangGraph + Eval评估体系实战,解决 Agent 优化全靠感觉的问题

本文介绍了一个为LangGraph Coding Agent设计的评估体系解决方案。文章首先指出了当前AI Coding Agent开发中的常见问题:优化过程缺乏客观评估标准,导致改进效果难以量化。随后提出了一个完整的评估框架,包括评估指标(任务成功率、质量指标、安全指标、成本指标和流程指标)、项目结构设计和评估案例集。 核心内容包括: 设计了JSON格式的评估案例集,覆盖正常任务、边界任务和高风险场景 实现了模拟Agent输出的演示代码 构建了多维度评分系统,包括关键词匹配、禁用词检测和成本评估 提供了评

sundong_81的博客 47

C#分词算法:正向、逆向、双向最大匹配算法

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33901843的博客 695

STM32Cube高效开发教程<基础篇>(一)----概述

一、 STM32系列器件和开发工具发展历史声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。本专栏博客参考《STM32Cube高效开发教程(基础篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。一、 STM32系列器件和开发工具发展历史。

我的博客 1171

使用 Azure DevSecOps 和 AIOps 构建可扩展且安全的多区域金融科技 SaaS 平台

这家虚构的金融科技 SaaS 组织在 Microsoft Azure 上构建了一个现代化的多区域架构,以实现高可用性、主动安全性和简化的 DevSecOps 工作流。如果您是 DevOps 从业者、SRE 专业人士或致力于创建弹性、可扩展且安全的金融科技解决方案的技术领导者,您将从中获得可直接应用于您自身项目的见解和经验教训。与大多数快速扩张的金融科技公司一样,他们需要确保不间断的正常运行时间、坚不可摧的安全性以及快速的功能交付,以满足全球用户群的需求。即使是短暂的中断也会损害用户的信心和忠诚度。

介绍AWS Azure GCP devops Terraform 等技术 1298

Lucene.Net C#分词操作帮助类

using Lucene.Net.Analysis; using Lucene.Net.Analysis.PanGu; using Lucene.Net.Documents; using Lucene.Net.Index; using Lucene.Net.QueryParsers; using Lucene.Net.Search; using Lucene.Net.Store; using System; using System.Collections.Generic; using System.IO.

风生晚凉的博客 579

自然语言处理:长文本场景下的关键词抽取实践

自然语言处理:长文本场景下的关键词抽取实践

丨汀、的博客 2076
上一篇: C# 一个简单分词程序的思路和代码(二) 键树
下一篇: 难得小聚
ETstudio
博客等级 码龄24年 43粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值