日本语自然语言处理中的分词库 - GiNZA

日本语自然语言处理中的分词库 - GiNZA

  • 0. 引言
  • 1. 日本语分词库
  • 2. GiNZA
  • 3. 使用 GiNZA

0. 引言

RAG 场景下提供精确的一个手法就是使用 Hybrid Search,Hybrid Search的另外一个检索就是全文检索。

使用 Elastic Search 进行全文检索的方案应该比较成熟,但是我这次方案中要使用的是 Oracle Text,而且语言是日本语。

在日本同事的帮助之下,定位到 GiNZA 这个日本语自然语言处理中的分词库。

接下来就开始学习学习 GiNZA 吧。

1. 日本语分词库

  • MeCab
    MeCab是由京都大学信息学研究科和日本电信电话株式会社(NTT)通信科学基础研究所联合研究小组开发的开源形态素分析引擎。

  • Janome
    Janome是一个用纯Python编写的、内置词典的形态素分析器。
    无需依赖任何其他库就可以轻松安装,并提供简单易用的API,适合嵌入到应用程序中。

  • GiNZA
    GiNZA是一个日语自然语言处理库。
    它起源于英语等主要语言的自然语言处理框架spaCy,可以视为spaCy的日语版本

  • JUMAN
    JUMAN是由京都大学开发的形态素分析工具。
    它旨在为从事日语分析研究的众多学者提供一个通用的形态素分析工具。
    考虑到学校语法不太适合计算机处理,JUMAN允许用户轻松定义语法和词之间的连接关系。

  • Sudachi
    Sudachi是由WorksApplications徳岛人工智能NLP研究所开发的形态素分析器。
    Sudachi主要执行以下三个处理步骤:

    • 文本分割
    • 词性标注
    • 规范化处理
  • (参考)SentencePiece
    SentencePiece是一个用于神经网络文本生成系统的无监督文本标记器和去标记器。
    它可以在训练神经网络模型之前确定词汇表大小。
    它直接从原始文本中训练。
    使用SentencePiece可以创建一个纯粹的端到端系统,不依赖于特定语言的预处理/后处理。

2. GiNZA

GiNZA 是 Megagon Labs 与日本语言研究所联合研究于 2019 年 4 月发布的开源日语自然语言处理库。

我总结了GiNZA的特点如下。

  • 易于部署
  • 使用 spaCy 和 SudachiPy
    • “spaCy”是一个可以在Python中使用的多语言自然语言处理库。
    • 可在Python中使用的日语形态分析器“SudachiPy”

此外,默认安装了名为“SudachiDict”的词典,因此您可以通过安装一个 GiNZA 轻松开始日语自然语言处理。

GiNZA 最初采用了一种基于 CNN 的学习模型,称为 ja_ginza 。

ja_ginza_electra 从v5.0开始就可用,使用深度学习模型Transformer。

ja_ginza_electra 是分析处理速度低于 ja_ginza 的模型,但分析精度较高。

3. 使用 GiNZA

示例代码1,

import spacyprint(f"===ja_ginza_electra===")
nlp = spacy.load('ja_ginza_electra')
doc = nlp('夏の全国高等学校野球選手権大会に出場する')
for token in doc:print(token)

输出,

夏
の
全国
高等学校
野球
選手権
大会
に
出場
する

示例代码2,

import spacy# GiNZAでルール追加
nlp = spacy.load('ja_ginza_electra')
nlp.add_pipe(factory_name='entity_ruler', config={"overwrite_ents": True}, last=True)
# Create an EntityRuler with overwrite entities enabled
patterns = [{'label': 'Person', 'pattern': '母'},{'label': 'Person', 'pattern': '父'}]
ruler = nlp.get_pipe('entity_ruler')
ruler.add_patterns(patterns)doc = nlp('小学生のサツキと5歳のメイの二人は、母の療養のために父と一緒に初夏の頃に3丁目に引っ越してくる。')
# Print the entities found in the text
for ent in doc.ents:print(f"{ent.text},{ent.label_},{ent.label_},{ent.start_char},{ent.end_char}"  # Using f-string for better readability)

输出,

小学生,School_Age,School_Age,0,3
サツキ,Name_Other,Name_Other,4,7
5歳,Age,Age,8,10
メイ,Name_Other,Name_Other,11,13
二人,N_Person,N_Person,14,16
母,Person,Person,18,19
父,Person,Person,26,27
初夏,Date,Date,31,33
3丁目,Facility_Part,Facility_Part,36,39

完结!

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

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

相关文章

️️️Vue3+Element-Plus二次封装一个可定制化的table组件

前言 为什么需要二次封装 开发后台管理系统,会接触到很多表格和表单,一但表格表单多起来,仅仅只需要一小部分改变,都需要在中重写一大堆代码,许多重复逻辑,我们可以把重复逻辑抽离出来二次封装一个组件 使用,减少在开发中需要编写的代码。 为什么需要定制化 每个…

前端请求404,后端保无此方法

1、微信小程序前端路径404 2、后端报无此路径 3、查看路径下对应的方法 发现忘了在list方法前加GetMapping(“/list”),加上即可

Eclipse 配置JDK版本,Eclipse Maven install 时使用的JDK版本

Eclipse配置JDK版本 Eclipse 配置JDK版本的地方? 在Eclipse中配置JDK版本的步骤如下: 打开Eclipse IDE。转到菜单栏并选择 “Window”(窗口)选项。在下拉菜单中选择 “Preferences”(首选项),或…

【pyhon】while语句的题目

1.计算1至100的偶数之和 sum_even 0 # 初始化偶数之和为0 i 1 # 从1开始循环 while i < 100: # 当i小于或等于100时&#xff0c;继续循环 if i % 2 0: # 如果i是偶数 sum_even i # 将i加到偶数之和上 i 1 # i自增1 print(“1至100的偶数之和为:”, sum_even) 给出乘…

计算机网络练习-计算机网络体系结构与参考模型

计算机网络分层结构 ----------------------------------------------------------------------------------------------------------------------------- 1.在ISO/OSI参考模型中&#xff0c;实现两个相邻结点间流量控制功能的是( )。 A.物理层 B. 数据链路层 C.网络层 D.传…

计算机网络—TCP协议详解:协议构成、深度解析(2)

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;マリンブルーの庭園—ずっと真夜中でいいのに。 0:34━━━━━━️&#x1f49f;──────── 3:34 &#x1f504; ◀️…

M系Mac关闭SIP

文章目录 M系Mac关闭SIP一&#xff1a;查看SIP状态二&#xff1a;关闭SIP步骤 M系Mac关闭SIP 一&#xff1a;查看SIP状态 1、使用终端 打开终端 输入csrutil status&#xff0c;回车 你会看到以下信息中的一个&#xff0c;指示SIP状态 已打开 System Integrity Protection s…

Qt/C++音视频开发70-无感切换通道/无缝切换播放视频/多通道流畅切换/不同视频打开无缝切换

一、前言 之前就写过这个方案&#xff0c;当时做的是ffmpeg内核版本&#xff0c;由于ffmpeg内核解析都是代码实现&#xff0c;所以无缝切换非常完美&#xff0c;看不到丝毫的中间切换过程&#xff0c;看起来就像是在一个通道画面中。其实这种切换只能说是取巧办法&#xff0c;…

Spire.PDF for .NET【文档操作】演示:合并 PDF 文档

需要合并 PDF 的原因有很多。例如&#xff0c;合并 PDF 文件允许您打印单个文件&#xff0c;而不是为打印机排队多个文档&#xff0c;组合相关文件通过减少要搜索和组织的文件数量来简化管理和存储多个文档的过程。在本文中&#xff0c;您将学习如何使用Spire.PDF for .NET将多…

socket编程实现TCP通信

socket编程实现TCP通信 tcp_client.cc #include <iostream> #include <cstring> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <pthread.h> #include <unistd.h&…

CV 面试指南—深度学习知识点总结(4)

本期专栏文章: CV 面试指南—深度学习知识点总结(1)CV 面试指南—深度学习知识点总结(2)CV 面试指南—深度学习知识点总结(3)CV 面试指南—深度学习知识点总结(4)CV 面试指南—深度学习知识点总结(5)

Qt——选中所有的RadioButton

在Qt中&#xff0c;如果想选中所有的RadioButton&#xff1a; 1. 你需要找到包含所有RadioButton的父控件&#xff0c;比如一个QGroupBox或者一个QWidget。 2. 使用父控件的findChildren函数来查找所有的RadioButton控件。这个函数会返回一个QObjectList&#xff0c;其中包含了…

windows部署pgsql

1、下载&#xff1a;Download PostgreSQL Binaries 2、创建data目录作为数据目录 3、初始化 bin目录执行命令&#xff1a; .\initdb.exe -D E:\pgsql\data -E UTF-8 --localechs -U postgres -W 输入密码直到完成 4、启动数据库 .\pg_ctl.exe -D E:\pgsql\data -l logfil…

C# Socket发送、接收结构体数组

C# Socket发送、接收结构体-CSDN博客 C# Socket发送、接收结构体数组按以下步骤操作&#xff1a; 一、Socket发送结构体数组 定义结构体数组 首先&#xff0c;根据给定的结构体定义&#xff0c;创建一个结构体数组实例。 [StructLayout(LayoutKind.Sequential, Pack 0)] p…

【基础】在GCC中编译和链接不是一个命令

在 GCC&#xff08;GNU Compiler Collection&#xff09;中&#xff0c;编译和链接不是一个命令。编译是将源代码转换为目标代码的过程。它主要进行语法检查、词法分析、生成中间代码等操作。链接是将多个目标文件和库文件组合成一个可执行文件的过程。在 GCC 中&#xff0c;通…

实战1-批量爬取百度图片(上)

任务需求&#xff1a;输入关键字下载100个图片保存到本地&#xff0c;每个关键字单独存放一个文件夹&#xff08;GUI版&#xff09; 任务描述&#xff1a;当输入关键字时会爬取100个与关键词有关的图片到本地每个关键词单独保存到一个文件夹中&#xff0c;比如说我输入黑客下载…

SpringBoot(二)【整合第三方技术】

1、SpringBoot 整合第三方框架 1.1、整合 JUnit 我们先回顾一下在学习 SpringMVC 的时候&#xff0c;我们当时整合 Spring 和 JUnit 是这么整合的&#xff1a; 注意&#xff1a;如果测试类在 SpringBoot 启动类的包或者子包中&#xff0c;可以省略启动类的设置&#xff0c;也…

【面试经典 150 | 二叉树层序遍历】二叉树的层平均值

文章目录 写在前面Tag题目来源题目解读方法一&#xff1a;层序遍历 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等内容进行…

4.18日paddleocr报错记录

No Images in train dataset, please ensure 1. The images num in the train label_file_list should be larger than or equal with batch size. 2. The annotation file and path in the configuration file are provided normally. 发现是ch_PP-OCRv3_rec.yml的loader的问…

设计模式——策略模式20

策略模式是一种行为设计模式&#xff0c; 它能让你定义多种算法或行为方式&#xff0c; 并将具体实现放入独立的类中&#xff0c; 以使算法的对象能够相互替换。使用场景例如活动中多种打折策略。 策略抽象 /*** author ggbond* date 2024年04月18日 08:02*/ public interfa…