nyancodeid/sastrawi

用于印度尼西亚语(Bahasa Indonesia)词根提取的PHP库

1.2.2 2024-05-08 10:38 UTC

This package is auto-updated.

Last update: 2024-09-08 11:22:53 UTC


README

Sastrawi是一个简单的PHP库,它允许您将印度尼西亚语(Bahasa Indonesia)的屈折词还原到其基本形式(词干)。尽管其简单性,但该库设计为高质量且具有良好的文档记录。有关更多信息(英文),请参阅README

词根提取

词根提取是将带前缀或后缀的词转换为词干的过程。例如

  • menahan => tahan
  • berbalas-balasan => balas

案例示例

假设有一个包含以下内容的博客文章

Rakyat memenuhi halaman gedung untuk menyuarakan isi hatinya.

以下查询不会找到上述文章

SELECT * FROM posts WHERE content LIKE '%suara%'

词根提取过程可以帮助找到正在搜索的文档,即通过删除前缀和后缀,仅保留以下基本形式

rakyat penuh halaman gedung suara isi hati

然后将搜索关键字也作为基本形式

Bersuara => suara

Sastrawi

  • Library PHP用于词根提取印度尼西亚语。
  • 易于与其他框架 / 集成。
  • 具有简单易用的API

演示

http://sastrawi.github.io

安装方法

Sastrawi可以通过Composer安装。

  1. 打开终端(命令行)并导航到项目目录。
  2. 下载Composer,使文件composer.phar位于该目录。
  3. 将sastrawi添加到您的composer.json文件中
php composer.phar require sastrawi/sastrawi:^1

如果您还不了解如何使用Composer,请阅读Composer入门指南

运行测试的方法

vendor/bin/phpunit

使用

将以下代码复制到您的项目目录中。然后运行该文件。

<?php
// demo.php

// include composer autoloader
require_once __DIR__ . '/vendor/autoload.php';

// create stemmer
// cukup dijalankan sekali saja, biasanya didaftarkan di service container
$stemmerFactory = new \Sastrawi\Stemmer\StemmerFactory();
$stemmer  = $stemmerFactory->createStemmer();

// stem
$sentence = 'Perekonomian Indonesia sedang dalam pertumbuhan yang membanggakan';
$output   = $stemmer->stem($sentence);

echo $output . "\n";
// ekonomi indonesia sedang dalam tumbuh yang bangga

echo $stemmer->stem('Mereka meniru-nirukannya') . "\n";
// mereka tiru

添加和删除基本形式

<?php

// include composer autoloader
require_once __DIR__ . '/vendor/autoload.php';

// create stemmer
// cukup dijalankan sekali saja, biasanya didaftarkan di service container

$stemmerFactory = new \Sastrawi\Stemmer\StemmerFactory();

$dictionary = $stemmerFactory->createDefaultDictionary();
$dictionary->addWordsFromTextFile(__DIR__.'/my-dictionary.txt');
$dictionary->add('internet');
$dictionary->remove('desa');

$stemmer = new \Sastrawi\Stemmer\Stemmer($dictionary);

var_dump($stemmer->stem('internetan')); //internet

算法

本库中使用的算法是以下所有所有者的知识产权。为了提高代码质量,这些算法被应用于面向对象设计

  • 纳齐夫和艾德里安尼算法
  • 亚洲J. 2007. 有效的印度尼西亚文本检索技术. 澳大利亚RMIT大学计算机科学与信息技术学院博士论文
  • Arifin, A.Z., I.P.A.K. Mahendra 和 H.T. Ciptaningtyas. 2009. 增强的Confix Stripping Stemmer和蚂蚁算法用于对印度尼西亚语新闻文档进行分类,国际信息与通信技术及系统(ICTS)会议论文集
  • A. D. Tahitoe, D. Purwitasari. 2010. 使用语料库基于词根提取的修改增强的Confix Stripping Stemmer的印度尼西亚语实现,印度尼西亚Surabaya,印尼理工学院(ITS),60111

基本词汇表

Sastrawi的词根提取过程非常依赖于基本词汇表。Sastrawi使用来自kateglo.com的基本词汇表,并进行了一些修改。

许可证

sastrawi 许可证是 MIT 许可证(MIT),而 Kateglo 基础词典的许可证是 CC-BY-NC-SA 3.0。有关更多信息,请参阅 Sastrawi 许可证Kateglo 内容许可证

在其他编程语言中

更多信息