重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になります。
perlで文字同士を比較させた上で、
マッチする文字(1文字は除外)
だけを抜き出したいと思っています。

A 昨日、りんごを食べました。
B りんごを食べたけどとても上手い。

マッチする文字

りんごを
食べ

AとBとを比較して、マッチする文字だけを抜き出したいと
思っていますがそのようなことは可能でしょうか?
自分なりに色々調べてみたのですが、
なかなか見つからず困っています。

宜しければご教授いただけましたらとても助かります。
宜しくお願い致します。

A 回答 (3件)

かなり強引で他によいやり方もありそうですが…


(1)文字列Aの〔1文字目〕(L1=開始位置)から〔2文字 〕(L2=長さ)を文字列xとする。
(2)文字列Bにxが含まれるかをチェック

→含まれる場合
・(L2)を3文字,4文字と増加
・同じチェックを行う(1・2をループ)
・≫含まれなくなった時
・・文字列x-1文字 がマッチする文字
・・(L1)を2文字目、3文字目とずらす
・・(L2)は増加したまま
・・同じチェックを行う(1・2をループ)

→含まれない場合
・(L1)を2文字目、3文字目とずらす
・(L2)が2文字から増加している時は1文字分減らす
・同じチェック(1・2をループ)


というのをソースに置き換えればOKです。
但し、
A 昨日、りんごを食べました。
B りんごを食べたけどとても上手い。
の場合は「りんごを食べ」がマッチします。
(質問のように、「りんごを」「食ベ」と別々にマッチさせるには文脈を判断させるプログラムを組まないと…)

又、「~した。」「~だった。」「いたたた。」などは全て「た。」でマッチしますので、必要なら句読点を除く処理を追加します。
    • good
    • 0
この回答へのお礼

とても御丁寧にありがとうございました。

今回はこちらでご教授いただいた方法でチャレンジしてみます。

お忙しい中、とても詳細に流れを教えていただき
本当にありがとうございました。

お礼日時:2007/04/22 18:39

「N-gram」という単語で、いろいろ調べてみるといいと思いますよ。


CPANにN-gramに関するモジュールもいくつかあります。
    • good
    • 0
この回答へのお礼

遅くなりましてすいませんでした。
こんなものがあるんですね^^
情報提供ありがとうございました。

お礼日時:2007/04/22 18:36

私たちの分野ではアライメントと呼ばれる操作です。



少々、実装の手間はかかりますが、
参考URLのドットプロット法が参考になるかと思います。

参考URL:http://ocw.osaka-u.ac.jp/contents/24/shiryo0427s …
    • good
    • 0
この回答へのお礼

すごいですね。
とても勉強になりました。
ありがとうございます。

お礼日時:2007/04/22 18:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!