测试分词工具Lucene.Net.Analysis.PanGu(盘古分词)

news2024/11/25 4:24:48

  从微信公众号及百度文章来看,全文检索的前置工作是分词,首先将要做全文检索的内容分词,然后采用全文检索模块或工具进行全文检索。参考文献4介绍了基于Lucene.net实现全文检索的大致思路,其采用的是Lucene.net+盘古分词的方式实现。参考文献5-6中介绍了近些年常用的.net的中文分词组件,准备从中选几个进行使用测试。本文就先以盘古分词为例测试及分词功能的基本用法。
  Lucene.Net.Analysis.PanGu是盘古分词的.netcore升级版(参考文献1,其实也有不少年头了,GitHub最后更新时间都是七年前了),由于老版本不支持最新Lucene.Net 3.0.3,对其进行了升级,可以支持最新的Lucene.Net 3.0.3。可以直接NuGet安装。另外把词库打包到dll文件里面了,无需拷贝词库。
新建项目,在NuGet包管理器中搜索并找到Lucene.Net.Analysis.PanGu包,可以看到NuGet服务器中与PanGu相关的包还是不少。

在这里插入图片描述
  Lucene.Net.Analysis.PanGu包中最重要的类是Lucene.Net.Analysis.PanGu命名空间中的PanGuAnalyzer类,该类用于根据输入的字符串或文本流返回分词集合,也即TokenStream对象。
在这里插入图片描述
  PanGuAnalyzer类既可以直接读取字符串进行分词,也可以读取本地文件分词(其实都是转成TextReader类的实例),下面是直接读取字符串分词的示例及结果(示例代码参考自参考文献2-3)。

	Analyzer analyzer = new PanGuAnalyzer();
    TokenStream tokenStream = analyzer.TokenStream("", new StringReader("白日依山尽,黄河入海流。欲穷千里目,更上一层楼。"));
    ITermAttribute ita = null;
    bool hasNext = tokenStream.IncrementToken();
    while (hasNext)
    {
        ita = tokenStream.GetAttribute<ITermAttribute>();
        txtResult.Text += ita.Term + "/";
        hasNext = tokenStream.IncrementToken();
    }

在这里插入图片描述

  然后是读取本地文件的,从网易新闻上找了一段话存到文本文件中,然后读取后分词,下面是示例及结果。

	txtResult.Text = String.Empty;

    using (TextReader tr = File.OpenText(txtPath.Text))
    {
        Analyzer analyzer = new PanGuAnalyzer();
        TokenStream tokenStream = analyzer.TokenStream("", tr);
        ITermAttribute ita = null;
        bool hasNext = tokenStream.IncrementToken();
        while (hasNext)
        {
            ita = tokenStream.GetAttribute<ITermAttribute>();
            txtResult.Text += ita.Term + "/";
            hasNext = tokenStream.IncrementToken();
        }
    }

在这里插入图片描述

  测试过程中发现的问题包括:1)文本文件的编码格式应为UTF-8或者Unicode,ANSI格式的文本文件读出来分词时是乱码;2)文本文件内容多了的话会卡死(试了几M及几十K的文本文件),可能是程序太简单,很多设置没有配置的原因,后续准备再继续学习Lucene.Net.Analysis.PanGu的用法。

参考文献:
[1]https://github.com/JimLiu/Lucene.Net.Analysis.PanGu
[2]https://www.cnblogs.com/zhang1f/p/14330506.html
[3]https://blog.csdn.net/m0_37554403/article/details/105684181
[4]https://blog.csdn.net/sd7o95o/article/details/119121420
[5]https://www.jianshu.com/p/6f47b670fcb0
[6]https://blog.51cto.com/u_15834522/5766716

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/534780.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥:前端开发笔面必刷题——Day1 数组(一)

文章目录 &#x1f4cb;前言&#x1f3af;数组中重复的数字&#x1f4da;题目内容✅解答 &#x1f3af;两数之和&#x1f4da;题目内容✅解答 &#x1f3af;替换空格&#x1f4da;题目内容✅解答 &#x1f3af;二维数组中的查找&#x1f4da;题目内容✅解答 &#x1f4dd;最后 …

C语言-程序环境与预处理

程序环境与预处理 程序环境翻译环境&#xff08;编译链接&#xff09;预编译编译汇编链接 执行环境 预处理预定义符#define定义的标识符 宏#define定义宏#define替换规则宏的命名约定带副作用的宏参数宏和函数的比较 其它#和##的使用字符串常量化运算符#标记粘贴运算符## 命令行…

fastled教程

文章目录 EVERY_N_MILLISECONDS(10)EVERY_N_SECONDS(5)fill_solid(leds, NUM_LEDS, CRGB::Red);fill_gradient_RGBfill_rainbow(leds, NUM_LEDS, i, 255 / NUM_LEDS);效果1fadeToBlackBy(leds, NUM_LEDS, 1); 效果2FastLED.setBrightness(2*i);// 效果3leds[i] CHSV(hue (i *…

scanf和scanf_s的区别、解决VS返回值被忽略的报错问题

一、scanf和scanf_s是什么&#xff1f; scanf()不会检查输入边界&#xff0c;可能造成数据溢出。 scanf_s()会进行边界检查。 二、分别分析 1.scanf scanf表示从键盘输入指定格式的数据。如&#xff1a;scanf("%d",x);指从键盘给x输入一个int型&#xff08;整型&…

【计网】【TCP】浅析TCP三次握手

前言 之前学习计网时不认真&#xff0c;TCP三次握手稀里糊涂就过去了&#xff0c;最近在重新查漏补缺计网这方面的知识&#xff0c;饭要一口一口吃&#xff0c;我就没有把其中涉及到的大量知识点写在此博客中&#xff0c;此文仅管中窥豹&#xff0c;之后再详细写吧。 笔记中有…

初步认识性能测试和完成一次完整的性能测试

上一篇博文主要通过两个例子让测试新手了解一下测试思想&#xff0c;和在做测试之前应该了解人几点&#xff0c;那么我们在如何完成一次完整的性能测试呢&#xff1f; 测试报告是一次完整性能测试的体现&#xff0c;所以&#xff0c;这里我给出一个完整的性能测试报告&#xff…

搞懂@DateTimeFormat 注解 和 对应的时间类型

通常而言&#xff0c;前端时间控件&#xff0c;一般情况下直接会传一个yyyy-MM-dd的日期字符串到后台。如果我们直接用java.util.Date类型来接收&#xff0c;是无法获取的。这是因为Date类型默认的格式为&#xff1a;Tue May 16 00:00:00 CST 2023这种。 举例 ApiOperation(val…

Games104现代游戏引擎学习笔记08

渲染那部分看的云里雾里的&#xff0c;等学完其他图形学的内容再回头开吧 游戏动画的三个挑战&#xff1a; 1.根据交互实时的反应各种变化 2.一帧时间里的庞大计算 3.更真实自然的表现 2D动画 sprite animation 把每一帧精灵循环绘制出来 2D技术实现3D效果 在各个视角采了一…

shell脚本——流编辑器“三剑客”之awk命令

shell脚本——流编辑器“三剑客”之awk命令 一、awk1、工作原理2、命令格式3、awk常见的内建变量&#xff08;可直接用&#xff09;4、按行输出文本5、按字段输出文本’:’6、通过管道、双引号调用shell命令 一、awk 1、工作原理 逐行读取文本&#xff0c;默认以空格或TAB键为…

射频放大器的原理和作用(射频放大器和功率放大器的区别)

射频放大器是一种电子电路&#xff0c;用于将输入信号增强到足够高的电平以驱动射频输出负载。其原理和作用如下&#xff1a; 射频放大器的工作原理是利用晶体管的三极管效应&#xff0c;将输入信号放大到足够的电平以驱动输出负载。在射频放大器中&#xff0c;输入信号经过输入…

深入理解 python 虚拟机:破解核心魔法——反序列化 pyc 文件

深入理解 python 虚拟机&#xff1a;破解核心魔法——反序列化 pyc 文件 在前面的文章当中我们详细的对于 pyc 文件的结构进行了分析&#xff0c;pyc 文件主要有下面的四个部分组成&#xff1a;魔术、 Bite Filed 、修改日期和 Code Object 组成。在前面的文章当中我们已经对前…

Android NDK: 使用Python生成下载地址

文章目录 1. 目的2. NDK下载链接3. 生成链接的 Python 脚本4. Bonus: 生成表格的 Python 脚本 1. 目的 Android NDK 的 github wiki 中给出了部分历史版本 NDK 的下载地址&#xff0c;有些版本的下载地址并没有在网页中给出。实际上这些下载地址很有规律。本文给出具体的链接&…

无人水面艇声呐装备现状与发展趋势(水声功率放大器)

无人水面艇声呐装备是目前海洋探测和水下情报收集的重要工具&#xff0c;其发展趋势受到了国防、军事、海洋资源勘探等领域的广泛关注。本文将介绍当前无人水面艇声呐装备的现状以及未来的发展趋势。 一、现状 无人水面艇声呐装备主要应用于水下物体的探测和测量&#xff0c;其…

NDK OpenGL仿抖音极快极慢录制特效视频

NDK​系列之OpenGL仿抖音极快极慢录制特效视频&#xff0c;本节主要是在上一节OpenGL代码架构上增加极快极慢等特效的视频录制功能。 实现效果&#xff1a; 实现逻辑&#xff1a; 在上一节的特效效果的基础上&#xff0c;使用MediaCodec和自定义EGL&#xff0c;将效果视频录制…

CountDownLatch与Binder连接池

CountDownLatch与Binder连接池 CountDownLatch 如果现在有一个题,有5个数,这时候我想让这5个数同时都乘2,然后算出结果后再算它们的平均数 这时候就可以用CountDownLatch import java.util.concurrent.CountDownLatch; public class Example {public static void main(Stri…

总结853

学习目标&#xff1a; 月目标&#xff1a;5月&#xff08;张宇强化前10讲&#xff0c;背诵15篇短文&#xff0c;熟词僻义300词基础词&#xff09; 周目标&#xff1a;张宇强化前3讲并完成相应的习题并记录&#xff0c;英语背3篇文章并回诵 每日必复习&#xff08;5分钟&#…

leetcode(力扣)刷题笔记(c++)【下】

文章预览&#xff1a; 单调栈739. 每日温度496.下一个更大元素 I503. 下一个更大元素 II42. 接雨水84.柱状图中最大的矩形 额外题目1365.有多少小于当前数字的数字941. 有效的山脉数组1207. 独一无二的出现次数189. 轮转数组724. 寻找数组的中心下标922. 按奇偶排序数组 II 后续…

软考高级架构师笔记-3数据库

目录 1. 前言 & 更新2. 数据库基本概念3. E-R图与二维表4. 约束、范式5. 数据库新技术1. 前言 & 更新 前文回顾: 软考高级架构师笔记-1计算机硬件软考高级架构师笔记-2计算机软件(操作系统)本章考情: 数据库章节都会考3-5分左右,第二版教材上对应2.3.3和6,主要考…

软考A计划-真题-分类精讲汇总-第十四章(数据流图)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

Python每日一练(20230517) 最大连续1的个数 I\II\III

目录 1. 最大连续1的个数 I Max Consecutive Ones &#x1f31f; 2. 最大连续1的个数 II Max Consecutive Ones &#x1f31f;&#x1f31f; 3. 最大连续1的个数 III Max Consecutive Ones &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; G…