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

news/2024/9/23 12:29:00/

日本语自然语言处理中的分词库 - 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可以创建一个纯粹的端到端系统,不依赖于特定语言的预处理/后处理。

GiNZA_43">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 的模型,但分析精度较高。

GiNZA_62">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.ppmy.cn/news/1430896.html

相关文章

屏幕太小?教你如何轻松将苹果电脑投射到安卓电视!

好几个人开组会,一台电脑怎么够看?那岂不是要好几颗脑袋挤在一起盯着屏幕?如果能将电脑屏幕投屏到大电视上,视觉就没有压力了。 将电脑屏幕投射到电视上,不仅能够让观众更加集中注意力,还能让信息的传递更加…

PgSQL之WITH Queries/Statement

PostgreSQL WITH 子句 在 PostgreSQL 中,WITH 子句提供了一种编写辅助语句的方法,以便在更大的查询中使用。 WITH 子句有助于将复杂的大型查询分解为更简单的表单,便于阅读。这些语句通常称为通用表表达式(Common Table Express…

汕头联想 ibm x3500 M5服务器上门维修记录

汕头联想服务器现场检修;汕尾IBM服务器故障维修;揭阳戴尔服务器维修;汕头ERP服务器维修;潮阳地区各种服务器故障维修;各类服务器主板齐全; 分享一例从东莞到汕头某染料厂维修ibm system x3500 M5服务器的真…

《自动机理论、语言和计算导论》阅读笔记:p261-p314

《自动机理论、语言和计算导论》学习第 10 天,p261-p314总结,总计 48 页。 一、技术总结 1.generating & reachable 2.Chomsky Normal Form(CNF) 乔姆斯基范式。 3.pumping lemma 泵作用引理。引理:引理是数学中为了取得某个更好的…

【Mybatis】一级缓存与二级缓存源码分析与自定义二级缓存

1.前言 缓存的本质就是内存,缓存在我们现在应用的价值是程序与数据库之间搭建的一个桥梁,提高用户的查询效率,尽量避免数据库的硬盘查询。 2.换出算法 LRU: 最不常用的对象会被换出到硬盘中(或者说最少使用的对象),通过给每个对象记录使用次数可以实现。 FIFO:先入先出,第一…

记笔记!国内怎么操作好现货白银

国内投资者可以选择的白银投资方式已有不少,而且当中也不乏跟国际市场上现货白银比较类似的品种,投资者可以通过相关交易所的官方APP办理开户的手续,如果想取得更好的效果和收益,直接参与国际市场上的现货白银,应该是更…

基于MEMS气敏元件的 SY-BSM-D12电池安全

基于MEMS气敏元件的 SY-BSM-D12电池安全 传感器监测模块用来监测电池热失控过程中产气 以及温度数据,提供早期预警信号,测试数据通 过I2C 、UART接口通信。 MEMS气敏元件表面可以被覆滤膜加以保护, 传感器模块可根据需要选择贴片或排线组装。…

(一)输入验证(语法和语义)

你无法控制进入应用程序的内容,甚至无法控制从数据库进入的内容,因为这些数据之前可能已经注入了。日期,如1900年 不是一个有效的日期,应确保在预期的范围内。因此,任何来自你控制的领域之外的东西,比如来自…