- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用位于 https://github.com/FLCLjp/iPhone-libmecab 的 MeCab iPhone 库.我在标记所有可能的单词时遇到了一些麻烦。具体来说,我不能将“吉本兴业”标记为“吉本”和“兴业”两部分。我可以使用任何选项来解决此问题吗? iPhone 库不公开任何内容,但它在 objective-c 包装器下使用 C++。我假设一定有某种设置可以更改以提供更细粒度的控制,但我不知道从哪里开始。
顺便说一下,如果有人想标记这个“mecab”可能是合适的。我还不能创建新标签。
更新:iOS 库正在调用 libmecab.cpp 中定义的 mecab_sparse_tonode2()。如果有人能指出有关该文件的一些英文文档,这可能就足够了。
最佳答案
其中没有任何特定于 iOS 的东西。您与 mecab(可能是 ipadic)一起使用的字典包含公司名称吉本兴业的条目。尽管名称的两个部分也被列为单独的名词,但 mecab 强烈倾向于将复合名称标记为一个词。
Mecab 缺少允许用户选择是否应将化合物拆分为多个部分的功能。请注意,这样的功能通常很难实现,因为并不是每个人都同意哪些化合物可以拆分,哪些不能。例如。容疑者是由容疑和者合成的吗?从纯粹的形态学角度来看也许是,但对于大多数实际应用来说可能不是。
如果您有一个要分割的化合物列表,一个快速的解决方法是为它们所包含的部分创建一个用户词典,并让 mecab 在主词典之外使用它。
有关如何执行此操作的日语文档 here .对于您的特定示例,它将涉及以下步骤。
用两个词条做一个用户字典,一个是吉本,一个是兴业:
吉本,,,100,名詞,固有名詞,人名,名,*,*,よしもと,ヨシモト,ヨシモト
興業,,,100,名詞,一般,*,*,*,*,こうぎょう,コウギョウ,コウギョウ
我怀疑这两个条目已经存在于默认字典中,但是通过将它们添加到用户字典并指定一个相对较低的特异性指示符(我对两者都使用了 100
- 较低的, split 的可能性越大),你可以让 mecab 倾向于更喜欢部分而不是整体。
编译用户字典:
$> $MECAB/libexec/mecab/mecab-dict-index -d /usr/lib64/mecab/dic/ipadic -u mydic.dic -f utf-8 -t utf-8 ./mydic
您可能需要调整命令。以上假设:
Mecab 是从 $MECAB
中的源代码安装的。如果您使用由包管理器安装的 mecab,您可能很难找到 mecab-dict-index
工具。最好从源安装。
默认字典在 /usr/lib64/mecab/dict/ipadic
中。这不是 mecab 包的一部分;它作为一个单独的包提供(例如 this ),您可能也很难找到它。
mydic
是在步骤 1 中创建的用户词典的名称。mydic.dic
是您将作为输出获得的已编译词典的名称 (不需要存在)。
系统字典(-t
选项)和用户字典(-f
选项)都使用 UTF-8 编码。这可能是错误的,在这种情况下,您稍后会在使用 mecab 时收到错误消息。
修改 mecab 配置。在系统范围的安装中,这是一个名为 /usr/lib64/mecab/dic/ipadic/dicrc
或类似名称的文件。在您的情况下,它可能位于其他地方。将以下行添加到配置文件的末尾:
userdic = home/myhome/mydic.dic
确保上面编译的字典的绝对路径是正确的。
如果您随后针对您的输入运行 mecab,它会将化合物拆分成多个部分(我在 Linux 系统上使用 mecab 0.994 对其进行了测试)。
更彻底的修复方法是获取默认词典的来源并手动删除所有要拆分的复合名词,然后重新编译词典。作为一般性评论,在较长一段时间内将 CJK 分词器用于生产模式下的严肃应用程序通常需要定期进行一定量的字典维护(添加/删除条目)。
关于ios - iOS 上 MeCab 日语分词器的选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14690036/
大家好,其实我快疯了,我竭尽全力解决这个简单的问题。 如您所见,狭窄空间中的简单标签导致单个单词“Verification”被分成两行,这当然是 Not Acceptable 。 我知道我只能将行数设
我正在尝试创建类似句子的东西,其中包含随机单词。具体来说,我会有类似的东西: "The weather today is [weather_state]." 并且能够做一些事情,比如找到 [brack
我希望我的导航栏 (.top-bar) 比现在更具响应性。目前,如果屏幕缩小太多,.top-bar-right 类只会下降到 .menu 类之下。我需要 .top-bar-right 来分割自己或打破
我正在尝试编写一个函数来将命令行参数解析为一个 vector 。问题是我似乎无法消除使用全局指针数组作为 vector 。 代码是: /** parse command line arguments
我正在做一些分词实验,如下所示。 lst是一个字符序列,output是所有可能的词。 lst = ['a', 'b', 'c', 'd'] def foo(lst): ... retu
我正在尝试解决 this问题。问题如下 给定一个输入字符串和一个单词字典,看看是否可以将输入字符串分割成以空格分隔的字典单词序列。 字典是一个字符串数组。 我的方法是以下递归 fn 并存储递归调用的结
我正在研究这个问题。似乎我找到了正确的答案并返回 true,但随后它被 false 覆盖。Java 新手,抱歉,如果这是一个虚拟问题。我如何返回 true?预先感谢您 问题给定一个字符串 s 和一本单
我正在使用 word-break css 属性,但即使是一个简单的示例似乎也无法让它工作。我的代码是: react : render() { return ( A very very lo
我正在尝试更改 word-break某些内联元素的属性,例如 和 以获得更好的页面内容流。 Firefox 似乎只识别显示为 block 的元素的分词属性(例如 ),而 Chrome 尊重分词的请求
我想标记用户输入的任何字符串。我的代码是这样的: #include #include #include int main(void) { char str; char *toke
有没有办法让单词正确对齐?我尝试添加 word-break 和 word-wrap 属性,但没有任何不同。 Subtotal S$42.50 Tota
如何防止 Bash 拆分子字符串中的单词?这是一个有点人为的例子来说明这个问题: touch file1 'foo bar' FILES="file1 'foo bar'" ls -la $FILES
我正在创建一个非常薄的页面(它被打印在收据纸上:56 毫米宽) 我正在尝试显示一些文本(在本例中为运送选择)。有时这个文本是正常的一些间隔单词,例如'Signed for 1st Class',有时是
我正在尝试弄清楚 IFS 如何影响 bash 中的分词。该行为依赖于上下文,其方式似乎与分词的直觉不符。 总体思路似乎很简单。引自 bash 手册页: The shell treats each ch
今天我 Handlebars 机升级到 iOS7,发现了一些奇怪的问题。 (博客.niwyclin.org)这是我网站的测试帖子页面 在桌面浏览器上它看起来不错。 我用Responsivator查了一
我在 jsfiddle 中有以下示例: https://jsfiddle.net/27L545rr/3/ Word-break should cause just the extra charact
我有一个应用程序,我需要解析或标记 XML 并保留原始文本(例如,不解析实体、不转换属性中的空格、保持属性顺序等)在 Java 程序中。 我今天花了几个小时尝试使用 StAX、SAX、XSLT、Tag
到目前为止,这是我的代码: ssssssssssssssssssssssssssssssssssssss 但是, word-wrap:break-word; word-br
我正在尝试使用 word-break打破一个长字符超过其父宽度的单词。 在这个例子中,我有一个 与 width:43px和里面的“玩”字。在 chrome 中,这个词很合适,但在 Firefox 中,
list(gensim.utils.simple_preprocess("i you he she I it we you they", deacc=True)) 给出结果: ['you', 'he'
我是一名优秀的程序员,十分优秀!