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
相关产品推荐
相关产品推荐

