日本語の認識のご相談
10 views (last 30 days)
Show older comments
matlabで日本語を入力したものに対して
文節ごとに文字の順番を最初と最後だけ固定してランダムに動かすことは可能でしょうか。
アバウトな質問で恐縮ですが、どうぞよろしくお願いいたします。
0 Comments
Accepted Answer
Atsushi Ueno
on 3 Oct 2022
Edited: Atsushi Ueno
on 3 Oct 2022
上記ドキュメントを参考に2つのラッパー関数をダウンロードしてカレントフォルダに置き、下記コードを実行すると最後の結果が得られました。素晴らしい。
str = "matlabで日本語を入力したものに対してタイポグリセミア現象を起こすことは可能でしょうか。" + ...
"アバウトな質問で恐縮ですが、どうぞよろしくお願いいたします。";
documents = tokenizedDocumentJP(str); % 形態素解析
tkns = tokenDetailsJP(documents); % 形態素解析結果の抽出
idx = tkns.rubi ~= "*"; % "*"以外のrubiを使う。それ以外の句読点等はTokenを使う。
tkns.Token(idx) = tkns.rubi(idx);
for i = 1:size(tkns,1)-1
if tkns.PartOfSpeech(i) == "auxiliary-verb" % 助動詞は
tkns.Token(i+1) = tkns.Token(i) + tkns.Token(i+1); % 次の品詞にくっつける
end
end
tkns(tkns.PartOfSpeech == "auxiliary-verb",:) = []; % くっつけた助動詞を消す
for i = 1:size(tkns,1) % 各単語において最初と最後以外の文字をひっくり返していく
str = char(tkns.Token(i));
if length(str) <= 3
continue; % 単語が3文字以下なら何もしない
end
prt = str(2:end-1); % 単語の2文字目~最後から1文字前まで取り出す
tkns.Token(i) = string([str(1) prt(randperm(strlength(prt))) str(end)]); % ひっくり返してくっつける
end
strjoin(tkns.Token') % 表示してみる
0 Comments
More Answers (0)
See Also
Categories
Find more on Language Support in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!