• 締切済み

リストの単語がテキストファイルで何回出てくるか

「人の苗字+改行」がたくさん入力されているname.txtと 「苗字が登場する会話文」がたくさん入力されているconv.txtの 二つのファイルがあります。 【name.txt】 鈴木 田中 佐藤 ・・・ 【conv.txt】 昨日の山田さんの話によれば、明日は佐藤さんが担当だそうだ。 京都の中山君が来たときに荷物を届けてほしい。 ・・・ これらname.txtのそれぞれが、conv.txt全体で何回出てきたかを求めるprelのプログラムを作りたいのですが、どのようにしたら良いでしょうか。 アウトプットは 鈴木 256 田中 982 佐藤 157 ・・・ となるようにしたいと思っています。 皆さまのお知恵をお貸しくださいませ。

  • Perl
  • 回答数3
  • ありがとう数4

みんなの回答

  • M_Sato
  • ベストアンサー率54% (550/1003)
回答No.3

この課題で検索のアルゴリズムを考えるときは、以下の点に留意したほうがいいでしょう。 ・二重カウント(「森」さんは「森田」さんでもヒットしてしまいます) ・苗字と普通名詞・地名等との区別(「川原で」「上野駅」など)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

> なんとなく、処理内容はイメージできていたのですが、 > 具体的なスクリプトはどのようになるでしょうか。 > >name.txtもconv.txtも、数万行のオーダーになっていまして、 >どのようにすれば速いか、というのも気になっています。 まず自分のイメージをコードにしてみて、そこで問題が出ているのなら それを聞くべきではないでしょうか。 これじゃ丸投げ。

parade77
質問者

お礼

確かにおっしゃるとおりでした。 一旦閉めて、またあらためることにします。 ありがとうございました。

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.1

name.txt を1件読む度に、その苗字をキーにして conv.txt を検索する、ということを繰り返すという処理内容が、一般的だと思います。

parade77
質問者

お礼

どうもありがとうございます。 なんとなく、処理内容はイメージできていたのですが、 具体的なスクリプトはどのようになるでしょうか。 name.txtもconv.txtも、数万行のオーダーになっていまして、 どのようにすれば速いか、というのも気になっています。

関連するQ&A

  • Excelでのリストアップ

    佐藤さん、鈴木さん、鈴木さん、高橋さん、田中さん、鈴木さんというデータから 「使われた苗字は佐藤さん、鈴木さん、高橋さん、田中さんの4種類です。」という動作をExcelでしたい時には何かよい方法はありますでしょうか。 のべ、といいますか、この動作をなんと言うか思いつかなかったため調べることが出来ずにいました。 アドバイスを頂けたらと思っております。 宜しくお願いいたします。

  • php、mysqlを使用した得点ランキング

    現在得点ランキングを作成しています。 mysqlの中に入っているデータを取り出して表示させたいのですが、 なかなかうまくいかず困っています。 mysql内 |id|name| |1|山田| |2|佐藤| |3|山田| |4|鈴木| |5|佐藤| |6|山田| |7|鈴木| |8|田中| としております。 表示方法は 順位| 名前 | 得点数 1位 | 山田 | 3 2位 | 佐藤 | 2 2位 | 鈴木 | 2 4位 | 田中 | 1 としたいです。 mysql内に入っている名前の数で得点数を出してなおかつソートで降順にしたいです。 お分かりの方がいらっしゃいましたらご教示お願いします。

    • ベストアンサー
    • PHP
  • エクセルで、次のような自動入力をしたい

      A    B    C    D   E  ・・ AA 1 田中 鈴木 佐藤          山田 2 鈴木 山田              海岡 3 田中 佐藤              佐藤 というような表があり、AAの列に名前を入力したとき、 D1に「山田」、C2「海岡」と、その行に関してAA列に新規の名前が入力されたときにD1,C2に自動入力することは、VBAで簡単にできますか? 3列目には「佐藤」さんがすでいるので入力不要です。 よろしくお願いします。(マクロ初心者です)

  • 複数のシートのセル内容をひとつにまとめたい

    複数のシートのセル内容をひとつにまとめたいと思っています。 Sheet1        Sheet2      Sheet3 1 山田 ¥100  1 山田 ¥80  3 鈴木 ¥80 2 佐藤 ¥130  2 佐藤 ¥55  4 田中 ¥150 3 鈴木 ¥110  4 田中 ¥60 こんなデータを Sheet4 1 山田 2 佐藤 3 鈴木 4 田中 とまとめたいんです。 金額は必要ないので、番号と名前だけをまとめたいんです。 どうすれば良いか、教えてください。 よろしくお願いします。

  • 架空の世界において「山田」が多用される理由は?

    よくフィクションに登場する架空の何かであったり、例え話において登場する名前としては、山田というものがありますね。 (山田商店、山田太郎、など) しかし日本においては佐藤・田中・鈴木こそがメジャーであり、山田に比べて数でも認知度でも勝っているものと思います。 何故これほどに「山田」ばかりが登場するのか、皆様のお考えをお聞かせ下さい。 ちなみに現段階では「漢字が簡単だから」という仮説を思いつきました。 しかしそうなるともっと「田中」が多用されて当然でしょうし、こうなるとこの仮説は有力なものとは言えません。

  • excel 重複したデータのコピー

    例えばこんなデータがあるとします。 名前  値 鈴木  1 佐藤  2 佐藤  5 小林  2 田中  3 田中  1 田中  2 斉藤  0 山田  4 山田  2 というデータから 佐藤  2 佐藤  5 田中  3 田中  1 田中  2 山田  4 山田  2 という感じで名前が2つ以上あるデータだけ抽出・コピーをしたいのですが、 どういう風にすれば出来るでしょうか。

  • Excel 数字から判断して文字を表示

    Excelにて以下の様な処理を関数を用いて行いたいと思います(都合上、VBは不可) 1)数字に名前を割り当てる ex:「1-田中」、「2-鈴木」、「3-佐藤」、「4-山田」、「5-橋本」、「6-山本」、「7-沢田」、「8-山岡」 2)1~9までの数字を入力する ex:「12345」、「3456」、「2487」 3)2で入力された数字を元に1の名前を表示する ex: 「12345」→「田中、鈴木、佐藤、山田、橋本」 「3456」→「佐藤、山田、橋本、山本」 「2487」→「鈴木、山田、山岡、沢田」 この様な処理はどうすれば実現出来ますでしょうか? 数字の組み合わせがいくつもあるのでVLOOKUPは使えない。と思い、質問させて頂きました よろしくお願い致します。

  • あなたなら抗議する?(フィクションです)

    田中君と佐藤さんが付き合っていたとします。 鈴木君は佐藤さんに片思いをしています。 田中君が原因で佐藤さんを傷つけてしまいました。 (それほど大きく傷ついたのではない) そして田中君が謝り佐藤さんは許してくれましたが、 佐藤さんに片思いしてる鈴木君は佐藤さんを傷つけたことを許せません。 そこで鈴木君が田中君に詰め寄りました。 ちなみに佐藤さんは鈴木君が田中君を責めることを望んでいません。 ここで質問なのですがこの鈴木君の行為は筋がとおっているのでしょうか? またあなたなら田中君に詰め寄りますか? またこういうことは現実にあると思いますか? (あったらできれば教えてほしいです) 人間関係を整理すると 田中君と佐藤さんは恋人 佐藤さんと鈴木君は友人(鈴木君は佐藤さんに片思い) ちなみにこれはあくまでフィクションです。 登場する人物などは・・・(ry)

  • Excelのドロップダウンリストについて

    Sheet1において, A列 B列 1 田中太郎 2 佐藤次郎 3 山田三郎 のようなリストを作成してあるとします。 Sheet2において, A1のセルに1を入力すると,B1のセルに田中太郎と表示される様,B1にVLOOKUP($A1,Sheet1!$A$1:$B$3,2,0)と入力しています。 この時,A1をドロップダウンリストで入力する場合,リストの表示と入力値を変更するようなことはできるのでしょうか。 すなわち,リストには, 田中太郎 佐藤次郎 山田三郎 と表示され, 田中太郎 を選ぶとA1には1が入力され,B1にはVLOOKUP関数の効果として田中太郎と表示されるといった具合です。 当方,HTMLは理解しておりますので,HTMLで意図をご説明させていただければと思います。 HTMLでプルダウンボックスを使う場合の入力として, <SELECT name="ボックス名"> <OPTION value="1">田中太郎</OPTION> <OPTION value="2">佐藤次郎</OPTION> <OPTION value="3">山田三郎</OPTION> </SELECT> ということになります。 これと同じようなことがエクセルで可能なのかどうかという質問でございます。

  • エクセルのデータ並べ替え(抽出)の方法

    エクセルのデータ並べ替え(抽出)の方法 を教えてください。 下記のようなデータがあるとします。   A    B    C   D 1 田中  東京  千葉  福岡 2 山田  京都  滋賀 3 佐藤  奈良  青森  USA 4 鈴木  カナダ 愛媛 A列は名前、B列以降は文字列です。B列以降はC列までの行、D列までの行とさまざまです。重複セルはありません。 これを下記のように並べ替えたいです。   A    B    C   D 1東京  田中 2千葉  田中 3福岡  田中 4京都  山田 5滋賀  山田 6奈良  佐藤 7青森  佐藤 8USA   佐藤 9カナダ 鈴木 10愛媛  鈴木 こういうことは可能でしょうか??? 教えてください。 よろしくお願いします。

専門家に質問してみよう