ここから本文です

#define 僕は I #define 好き like #define 納豆 nattou #define だ . char ...

aglaiaさん

2017/3/2914:33:29

#define 僕は I
#define 好き like
#define 納豆 nattou
#define だ .

char a[10] = "僕は納豆が好きだ"

このようなプログラムでは、aに入っている文章(僕は納豆が好きだ)は
I like nattou というようになるのでしょうか?

また、ならないとしたら、どのようにすればできるのでしょうか?


~背景~
簡単に言えば、Aと言われたらBと答えるというプログラムを作りたいのですが、日本語は、同じことをたくさんの言葉で言い換えることができ、プログラムが非常に複雑になります。
なので、英語に変換すれば、だいたいのニュアンスを知ることができます。
また、英語に変換する方法ではなくても、根本的に解決できるなら教えてほしいです。

閲覧数:
48
回答数:
4

違反報告

ベストアンサーに選ばれた回答

iki_tanpopoさん

2017/3/2920:17:20

AIといっていますが、あなたの考えているものは、能無しです。
人口無能(誤字とか罵倒とかではないです)でgogってください

日本語の文法解析なら、ChaSenとかMeCab、Kakasiなどがあります。

  • 質問者

    aglaiaさん

    2017/3/3014:13:21

    人工無能、参考になりました。ありがとうございます。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2017/3/30 14:15:28

日本語の文法解析がかなり役に立ちました。ありがとうございます。

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

mer********さん

2017/3/3004:49:10

>I like nattou というようになるのでしょうか?

いろいろな意味で、なりません。

・文字列定数の中身は#defineによる置換の対象ではありません。
・#defineマクロ名に日本語を使うことはできません。
・よしんば置換されたとしても、その結果は"Inattouがlike."です。どう考えても"I like nattou."にはなりません。

>また、英語に変換する方法ではなくても、根本的に解決できるなら教えてほしいです。

「人工無能」(あるいは「人工無脳」)と呼ばれる類のプログラムを読んでみるといいでしょう。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

2017/3/2922:09:13

そもそも、#defineなどのプリプロセッサ命令はソースリストに対してだけ作用するのであって、実行時になにかするものではないということがわかってないような気がする。

そもそも
> 英語に変換すれば、だいたいのニュアンスを知ることができます
ここに同意できないなぁ。

> 根本的に解決できるなら
そんなことが出来たら大発明じゃないか? 知恵袋でちょいちょいと説明できるなんてありえないでしょ。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

has********さん

2017/3/2915:24:11

#defineは基本的に置換です。

#define N 10
for (i=0 ; i<N ; i++)

と書くと、コンパイラが内部処理で

for (i=0 ; i<10 ; i++)

と書き換えてくれてコンパイルしてくれるわけです。

でも文字列の中身は置換の対象にはなりません。

char a[10] = "僕は納豆が好きだ" ;

は文字列です。

「背景」の意味が私にはピンときません。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる