過去の桐井戸端BBS (桐ver.9)
26992 ある項目のデータを分割したい。 野崎 2004/07/07-15:33
いつもお世話になっています。

英語の文章が[問題]に入っています。
([問題]中の文の数はまちまちです。)
これを、1つの項目に1文という風に分割したいです。
どのようにしたら良いでしょうか?
どなたかお教え下さい。
26993 Re:ある項目のデータを分割したい。 宮城 2004/07/07-16:27
記事番号26992へのコメント
野崎さん、こんにちは。複数の文があるわけですね。
文は必ず句点で終わるということでよろしいでしょうか?

であるならば、句点が1個以下ならなにもしない。
2個以上の場合、句点の出現位置を#文字位置で調べ(nとする)、
#部分列([問題],1,n)と#部分列([問題],n+1)で切り分ける。
これを句点が1になるまで繰り返す。ということになります。

いやいや「?」「!」もあるぞということでしたら、最初に#文字置換で置き換えておきます。

普通は同一レコード中でやるでしょうから、文の最大数はいくらですか?

こんなレコードになると思います。

[元の問題][作業用の問題][文1][文2]・・・[文m]

もちろん、[作業用の問題]に#部分列([問題],n+1)、[文1]に([問題],1,n)。

[文1]じゃ使いにくいので &STRに#項目属性(i,1)代入して使用。

[作業用の問題]に含まれる句点の数は次による。

#文字数([作業用の問題])‐#文字数(#文字置換([作業用の問題],"。",""))

(部品は以上で揃ってるはず。(^^;; )

26994 Re:ある項目のデータを分割したい。 宮城 2004/07/07-16:29
記事番号26993へのコメント
しくじりました。

誤:#項目属性(i,1)
正:#項目属性(&i,1)

&iは数値変数宣言しましょうか。

26998 Re:ある項目のデータを分割したい。 うにん 2004/07/07-19:43
記事番号26993へのコメント

>いやいや「?」「!」もあるぞということでしたら、最初に#文字
>置換で置き換えておきます。

元に戻すのがめんどくさそう。

タブ区切りでテキスト書き出しして、エディタで文の区切りにしたい文字を全部タブ付に置換して読み込めばよさそうですが。

27002 宮城さん,うにんさん 野崎 2004/07/08-09:54
記事番号26998へのコメント
おはようございます。

ありがとうございます。
お二人の意見を参考に、頑張ってみますね。
又、進捗状況をお知らせします。

27028 Re:ある項目のデータを分割したい。 野崎 2004/07/13-20:53
記事番号26993へのコメント
宮城さん

私の質問にすぐにお答え下さったにもかかわらず、
大変遅くなりました...。
無事、文章を分割することは出来ました。

しかし、

>句点が1個以下ならなにもしない。2個以上の場合、
>句点の出現位置を#文字位置で調べ(nとする)、
>#部分列([問題],1,n)と#部分列([問題],n+1)で切り分け
>る。これを句点が1になるまで繰り返す。ということになります。

私には少し難しすぎました...。

元の文章が[問題]にあり、
これが[問題1],[問題2],[問題3],…に分割されるとすると、
部分列を使い、ピリオド以降の文章が[問題1],[問題2],…に入っていきます。
でも、[問題1]は文ではなく、文章になるものもあります。
部分列の定義がそうなので、そうなるのは分かります。
でも、ここでとまってしまいました。

>[元の問題][作業用の問題][文1][文2]・・・[文m]
>もちろん、[作業用の問題]に#部分列([問題],n+1)、
>[文1]に([問題],1,n)。
>[文1]じゃ使いにくいので &STRに#項目属性(i,1)代入して使用。
>[作業用の問題]に含まれる句点の数は次による。
>#文字数([作業用の問題])‐#文字数(#文字置換([作業用の
>問題],"。",""))

この辺りにそのヒントがあったのかもしれませんが、
分かりませんでした...。
また、[問題]の文の最大数を求めることも出来ませんでした。
項目値の中にある . や ! や ? の数はどうやって調べるのですか?
(これは、新たに、質問した方がいいですね。)


部分列や文字置換,文字位置,文字数などの関数を始めて使い、
それだけでも、勉強になりました。
ありがとうございました。
(結局、テキストファイルにおとして、分割しました。)

27029 Re:ある項目のデータを分割したい。 野崎 2004/07/13-20:59
記事番号26998へのコメント
うにんさん

大変遅くなりました…。
文章を文に分割することが出来ました。
ありがとうございました。

27037 Re:ある項目のデータを分割したい。 宮城 2004/07/14-21:45
記事番号27028へのコメント
>私には少し難しすぎました...。

不細工な CMDをあげておきます。

>部分列や文字置換,文字位置,文字数などの関数を始めて使い、
>それだけでも、勉強になりました。

やってみるのが大事と言うか、やってみないと絶対わかりません。

27071 Re:ある項目のデータを分割したい。 野崎 2004/07/17-15:53
記事番号27037へのコメント
宮城さん

いつもいつも結果を出すのが遅くてすみません。
宮城さんのプログラムは、またまた、超ストライクでした。
文末にピリオドも入るようになってました。
実は前回、文章を文に分割したとき、ピリオドが入らなかったのです。
それで、その後の作業が必要になったのですが...。


それから、宮城さんのプログラムを見ていて、
私は、部分列を
#部分列(&作業中,&ピリオド位置+1) これしか使わずというか、
これしか使えず、初めの一文を抜き出すことが出来なかった様です。
#部分列(&作業中,1,&ピリオド位置) としたらよかったのですね。
また、&STR,繰り返し、ケース は次使えるかどうか分かりませんが、
チャンスがあったら挑戦してみます。
前回、答えられなかった、
文章中の文の最大数も求められるようになりました。
質問した内容だけではなく、その周辺の事まで学べるので、
本当に有難いです。
本当にやってみるのが大事で、やってみないと分からないですね。

それから、ちゃんと、文末にくる可能性のある、
!,?,.",!",?",.',!',?' でもやってみました。
データが ベリー ビューティフル になりました。

又、懲りずに気長にお願いします。
27072 すみません。 野崎 2004/07/17-15:55
記事番号27037へのコメント
宮城さん

お礼の言葉をうっかり忘れてました。
どうも、ありがとうございました。
27073 Re:すみません。 宮城 2004/07/18-00:42
記事番号27072へのコメント
野崎さん、祝着至極。(^^♪

戻る