
英文から単語の頻度を出力するプログラムを作成しています。アルゴリズムは、英文から単語を抜き出して以前にあったものなら、その単語のカウントを1つ増やし、以前にないものなら、新しく頻度表に付け加えるというものです。
とりあえず、isspace関数を使って単語を抜き出すことを考えたのですが、これですと
know
know,
know?
のように同じ単語であるのに、カンマやピリオドが付いてしまっていると後で以前に見つかったものかを照合する際に不都合が生じてしまいます。isalnum関数で抜き出したものが、アルファベットか数字であるかを調べ、アルファベットと数字だけを抜き出せば、カンマやピリオドはうまく取り除けると思うのですが。そうすると、I'mなどのアポストロフィーも取り除かれてしまうのではないかと。。
すいません。混乱してます。。皆さんだったらどのようにしますか?答えではなく、ヒントやきっかけを頂けるとありがたいです。
No.4ベストアンサー
- 回答日時:
トークンの切り出しに strtok() が使えるなら、使った方が楽です。
第一段階では、1文を空白をデリミタとして全て切り出して、I'm I've I'll I'd などの例外辞書とマッチングさせる。第二段階では、切り出したトークンを更に別のデリミタで切っていくのがいいのではないかと思います。
例えば、sun-in-law のようなものを1つの単語として認識させるなら、例外辞書はどんどん大きくなっていくので、頭の痛いところです。
No.3
- 回答日時:
前に似たようなことをやったことがあります。
結構面倒くさいです。セパレータとしては[スペース]のほかに
[?!.,;:”]などが有ると考えた方がうまくいくかも判りません。
理由は 単語,単語 や 単語;単語 が現れるからです。
[’]をアルファベット並みにするかセパレータにするかも考えどころです。
単に know know, know? を統一するだけなら、後ろから探して、
アルファベットが出てくるまで読み捨てる方法も使えます。
いずれにしても、このあたりの方針をきちんと整理してから
プログラムを進められることをお勧めします。
回答ありがとうございました。
セパレータとして記号を使ってしまえば、いちいちスペースに変換する手間が省けますね。。
とりあえず、単語を抜き出す文章から記号を抜き出して、その記号かスペースが現れるまで1つの単語として認識させれば良いかもしれません。
こんな感じでしょうか?
if (c = '?' || c = ',' || ....)
(cはchar型)
それとも、getcとかを使うことを考えると、文字コードを使ったほうが良いのかな。文字コードはいまいち苦手です。。汗
完璧に作るのは難しいようなので、妥協案を検討中です。
いま現在、アポストロフィー無視説が有力となっております。
No.1
- 回答日時:
仮に私がやるとしたら、無精だから、I'm等のカウントは諦めます。
カウントしてmが出てきたら、「これはメートルのmと
I'mのが混じってるんだな」と考えます。
でも、それもカウントしたいのなら、
(1)文を入力して(2)アポストロフィー以外の記号をスペースに変換して(3)単語を抜き出す
のようにします。
回答ありがとうございました。
なるほど。私はプログラミングがあまり得意ではないので、完璧にこなそうとしてしまうと、結構はまって動けなくなってしまいそうですね。
とりあえず、アポストロフィー以外の記号をスペースに変換するのを試みてみようと思いましたが、そ。。それも結構難しそうですね。。汗。。,?()やらいろんな記号がありますから。。がーん。。しかも、引用符の’’はどうしましょう。。汗。。これは残ってしまったら困りますね。。うーん。難しい。。
いざとなったらアポストロフィー無視の妥協策も検討したいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 英単語帳だけやっても単語は覚えられません。単語帳だけだと、なんか単語の流れを覚えてしまうため、不意に 6 2022/05/12 23:50
- 大学受験 大学受験英語の勉強法についてです どうしても英語長文の勉強ができません 初めて数分で絶対にやる気がな 2 2023/05/05 00:32
- 仕事術・業務効率化 効率的な勉強方法(分野問わず)を教えてください 1 2023/08/16 01:33
- Excel(エクセル) エクセルでの文字抽出 3 2022/07/09 12:17
- 大学受験 明治大学受験、もう一冊、英単語張をやるか? 4 2022/10/23 20:50
- その他(学校・勉強) 英単語の勉強をして思考力が上がることってあるんですか? 2 2022/08/18 17:26
- TOEFL・TOEIC・英語検定 英会話の習得 4 2022/06/05 10:23
- 英語 アルファベット順の4文字以上の英単語 10 2022/07/30 22:42
- 留学・ワーキングホリデー リスニング力、はつきますか?6カ月語学学校行き数年間お金を稼いでまた、6カ月間語学留学に行くのは? 1 2023/02/11 15:49
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字列の比較のはずなのに・・・
-
perl初心者ですが、プログラム...
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
数字の位ごとの値を表示するプ...
-
VB6.0-整数と余りを求める
-
jsp~jspにhiddenを使って変数...
-
プログラミングについて教えて...
-
Cプログラムについて
-
エラーの意味は? Lvalue req...
-
C#で動的にコントロールを取得...
-
C言語 列挙型(enum型)変数について
-
RichTextBoxの改行を認知してく...
-
エクセル、この関数の意味は?
-
Excel-vba 文字列と変数を...
-
ラジオボタンの値の取得につい...
-
バッチファイルがうまくいきま...
-
vba 最大値 条件分岐
-
c言語で乱数を扱うときの
-
BNF(バッカス・ナウア・記法)
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語でしりとりのプログラムを...
-
<a href=…>がうまくいかない
-
異なる文字列のマッチングを、D...
-
単語の出現頻度を求めるプログラム
-
単語の頻度プログラム
-
禁止ワードに設定できない文字
-
rubyのループ
-
検索でヒットさせたくない
-
CGI.pmによるプルダウンメニ...
-
C言語 exitの使い方
-
Excel-vba 文字列と変数を...
-
VBAでダブルコーテーション入り...
-
フォームを開くときに、コンボ...
-
Windows11のカメラで動画を撮り...
-
エラーの意味は? Lvalue req...
-
EXCEL/VBA 変数の値をクリップ...
-
配列の値を置換するにはどうす...
-
jsp~jspにhiddenを使って変数...
-
excelの、ある数式内の{}の意...
-
整数xxxが大き過ぎますというエ...
おすすめ情報