#日语词形分析 #日语 #词形 #分析器 #libmecab

mecab

mecab 日语词性标注和词形分析库的Rust安全封装

8个版本

使用旧的Rust 2015

0.1.6 2023年9月3日
0.1.5 2022年6月1日
0.1.4 2019年11月7日
0.1.3 2015年11月7日
0.0.1 2015年4月19日

#172 in 文本处理

Download history 60/week @ 2024-03-11 15/week @ 2024-03-18 1/week @ 2024-03-25 91/week @ 2024-04-01 17/week @ 2024-04-08 25/week @ 2024-04-15 29/week @ 2024-04-22 20/week @ 2024-04-29 20/week @ 2024-05-06 25/week @ 2024-05-13 44/week @ 2024-05-20 33/week @ 2024-05-27 33/week @ 2024-06-03 23/week @ 2024-06-10 40/week @ 2024-06-17 27/week @ 2024-06-24

125 每月下载量
2 crate 中使用

MIT 许可证

29KB
674

mecab-rs 构建状态

mecab 提供的日语词性标注和词形分析库的安全Rust封装。

使用方法

该封装与meccab的C++接口几乎相同,增加了各种迭代器以便于舒适的数据访问。它是使用最新版本的meccab v0.996构建的。

Windows

Windows Rust版本(MSVC ABI和gcc工具链)都可以使用预构建的32位库。不推荐在Windows命令行中使用meccab-rs,如果未使用正确的代码页和支持日语字符的字体,可能会导致未定义的行为

CMake & 64位库

感谢 @DoumanAsh 提供这些文件

示例

将此包含在Cargo.toml中,将meccab添加到您的项目中

[dependencies]
mecab = "*"

单线程环境

extern crate mecab;

use mecab::Tagger;

fn main() {
  let input = "太郎は次郎が持っている本を花子に渡した。";
  println!("INPUT: {}", input);

  let mut tagger = Tagger::new("");

  // gets tagged result as String
  let mut result = tagger.parse_str(input);
  println!("RESULT: {}", result);

  // gets N best results as String
  result = tagger.parse_nbest(3, input);
  println!("NBEST:\n{}", result);

  // gets N best in sequence
  tagger.parse_nbest_init(input);
  for i in 0..3 {
    if let Some(res) = tagger.next() {
      println!("{}:\n{}", i, res);
    }
  }

  // gets Node object
  for node in tagger.parse_to_node(input).iter_next() {
    match node.stat as i32 {
      mecab::MECAB_BOS_NODE => {
        print!("{} BOS ", node.id);
      },
      mecab::MECAB_EOS_NODE => {
        print!("{} EOS ", node.id);
      },
      _ => {
        print!("{} {} ", node.id, &(node.surface)[..(node.length as usize)]);
      }
    }

    println!("{} {} {} {} {} {} {} {} {} {} {} {} {}",
      node.feature,
      input.len() as isize - node.surface.len() as isize,
      input.len() as isize - node.surface.len() as isize  + node.length as isize,
      node.rcattr,
      node.lcattr,
      node.posid,
      node.char_type,
      node.stat,
      node.isbest,
      node.alpha,
      node.beta,
      node.prob,
      node.cost);
  }

  // dictionary info
  for dict in tagger.dictionary_info().iter() {
    println!("\nfilename: {}", dict.filename);
    println!("charset: {}", dict.charset);
    println!("size: {}", dict.size);
    println!("type: {}", dict.dict_type);
    println!("lsize: {}", dict.lsize);
    println!("rsize: {}", dict.rsize);
    println!("version: {}", dict.version);
  }
}

多线程环境

请参阅多线程示例

许可证

MIT许可证(MIT)

版权所有(c)2015-2016 Cristian Kubis

特此授予任何获得此软件及其相关文档副本(以下简称“软件”)的个人免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许获得软件的个人按以下条件进行操作:

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的、暗示的,还是关于适销性、特定用途适用性或非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任承担责任,无论是因为合同行为、侵权或其他行为,也不论是由于软件本身、使用软件或其他与软件相关的行为而产生的。

无运行时依赖