You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quanteda中日语复合词分词功能失效问题求助

解决quanteda中日语单字组合生成二元词的问题

问题根源

你之前的代码里tokens_compound的phrase用法有误:phrase("休","浜")会被解析成两个独立短语,而非连续的两个单字。另外,日语无空格分隔的特性,默认的tokens()分词逻辑会把整句当作单个词,导致无法识别连续单字。

修正方案1:针对特定二元词(如"休浜")

调整phrase的用法,同时指定按字符分词,确保能识别单个日语字符:

library(quanteda) 
text <- readLines("https://laits.utexas.edu/~mr56267/example.txt")
test_corpus <- corpus(text)

# 按字符分词,保留单个日语字
test_tokens <- tokens(test_corpus, what = "character", remove_punct = TRUE, remove_numbers = TRUE) |>
  # 用空格分隔指定连续的两个单字,让tokens_compound识别并合并
  tokens_compound(pattern = phrase("休 浜"), concatenator = "")
test_tokens

test_kwic <- kwic(test_tokens, pattern = "休浜", window = 5)
test_kwic

修正方案2:生成所有日语二元词

如果需要批量生成所有连续单字组成的二元词,用tokens_ngrams更高效:

library(quanteda) 
text <- readLines("https://laits.utexas.edu/~mr56267/example.txt")
test_corpus <- corpus(text)

test_tokens_bigram <- tokens(test_corpus, what = "character", remove_punct = TRUE, remove_numbers = TRUE) |>
  tokens_ngrams(n = 2, concatenator = "")
test_tokens_bigram

进阶优化:精准日语分词

如果需要基于语义分词(而非单纯字符拆分),可以结合tokenizers包的日语分词功能,再传入quanteda处理:

library(quanteda)
library(tokenizers)

text <- readLines("https://laits.utexas.edu/~mr56267/example.txt")
# 先做语义层面的日语分词
text_jp_tokens <- tokenize_japanese(text, simplify = TRUE)
# 转换为quanteda tokens对象后再合并指定短语
test_tokens <- tokens(text_jp_tokens, remove_punct = TRUE, remove_numbers = TRUE) |>
  tokens_compound(pattern = phrase("休 浜"), concatenator = "")
test_tokens

内容的提问来源于stack exchange,提问作者Mark R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:43:16