質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

1826閲覧

英語で単語を入力しても検索が出来るように改良したいです。

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2015/04/28 07:48

C言語のアリゴリズムです。日本語を入力して英語にすることは出来るのですが、英語を入力して日本語に逆引きしたいです。色んな方法でソースコードを改良し、試したましたが余りいい結果が得られませんでした。訳語候補が「/」で区切られていたり、複数の単語からなるものは「_」で連結されたりしていまして読み込みの際に上手くいかなかったりしました。それで、一から新しい考え方と正しいソースコードが知りたいです。その方法を教えて頂きたいです。txtファイルの中だけの単語から読み込んでいます。

lang

1#include <stdio.h> 2#include <string.h> 3#include <math.h> 4 5#define SIZE 2000 6#define DIM 200 7#define N 200 8 9char words[DIM][256]; 10char eng[DIM][256]; 11double sizes[DIM]; 12double sv[DIM][DIM]; 13int count; 14double cosine( int i, int j ); 15int readfile( char* path ); 16 17/* 18 コンパイル方法: 19 gcc -DN=200 -o MT MT.c -lm 20 */ 21 22int main(void) 23{ 24 // 日本語単語を入力すると、英語訳語候補を出力する 25 double th = 0.6; /* 類似度閾値 */ 26 readfile( "./exv_animals.txt" ); 27 char input[256]; 28 while(1){ 29 printf("日本語で動物名を入力してください。: "); 30 scanf("%s", input); 31 if ( strcmp( input, "q" ) == 0 ){ break; } 32 printf("入力名: %s ", input); 33 int i, j; 34 int check = 0; 35 for ( i = 0; i < count; i++ ){ 36 check = 0; 37 if ( strcmp( input, words[i] ) == 0 ){ 38 printf("==> %s\n", eng[i] ); 39 check = 1; 40 } 41 if ( check == 1 ){ 42 int rcount = 0; 43 for ( j = 0; j < count; j++ ){ 44 if ( i == j ){ continue; } 45 double sim = cosine( i, j ); 46 if ( sim >= th ){ 47 printf("[%s]\t[%s]\t%.3lf\n", words[j], eng[j], sim); 48 rcount++; 49 if ( rcount == 10 ){ break; } 50 } 51 } 52 } 53 } 54 printf("\n"); 55 } 56 57} 58 59/* ファイルの読み込み */ 60int readfile( char* path ) 61{ 62 FILE* fp = fopen( path, "r" ); 63 if ( fp == NULL ){ 64 printf("%s: file open error.\n", path ); 65 return -1; 66 } 67 char s[10000]; 68 char sep[] = " "; 69 count = 0; 70 int n = 0; 71 double size=0.0; 72 while( fgets( s, sizeof(s), fp ) != NULL ){ 73 char *tok = strtok( s, sep ); 74 int i = 0; 75 while( tok != NULL ){ 76 if ( i == 0 ){ strcpy(words[n], (const char*)tok); } 77 if ( i == N+1 ){ 78 sscanf((const char*)tok, "%lf", &sizes[n]); 79 //printf("%.3lf, %s\n", sizes[n], (const char*)tok); 80 } 81 if ( i == N+2 ){ 82 strcpy(eng[n], (const char*)tok); 83 int l = strlen(eng[n]); 84 eng[n][l-1] = '\0'; 85 } 86 else{ 87 sscanf( (const char*)tok, "%lf", &sv[n][i-1] ); 88 } 89 tok = strtok( NULL, sep ); 90 i++; 91 } 92 n++; 93 count++; 94 } 95 fclose(fp); 96 return 1; 97} 98 99double cosine( int i, int j ) 100{ 101 double sim = 0.0; 102 double sz1 = sizes[i]; 103 double sz2 = sizes[j]; 104 int k; 105 for ( k = 0; k < N; k++ ){ 106 sim += sv[i][k] * sv[j][k]; 107 } 108 printf("%.3lf, %.3lf, %.3lf\n", sim, sz1, sz2); 109 sim = sim / ( sz1 * sz2 ); 110 return sim; 111} 112

exv_animals.txtの中身です。

犬 0.812 1.472 -2.221 3.249 -2.881 -1.361 3.433 -0.240 0.425 -1.432 0.210 0.465 0.610 -0.557 2.772 -0.469 -0.361 1.357 2.443 -1.563 -0.462 -0.950 -1.372 -1.788 2.058 -0.467 -1.550 0.727 0.459 0.011 2.628 -2.646 -0.650 -0.038 -2.246 -0.387 0.409 -0.117 0.799 -1.502 0.102 0.635 -3.145 -4.128 -1.341 -0.011 1.891 2.859 -3.047 1.019 2.002 -4.149 2.106 -1.748 0.872 4.016 -1.096 -0.473 0.236 -2.707 -1.317 0.444 2.840 -1.408 2.380 -1.567 1.541 3.661 0.905 0.531 0.309 2.838 -1.565 -3.284 -1.011 -0.175 2.685 0.675 -0.160 -2.178 2.183 1.849 -3.328 0.812 1.274 1.373 -0.409 2.728 -1.709 1.186 3.556 -1.861 1.037 0.929 4.090 1.923 0.184 -0.917 0.641 1.444 -0.159 -0.709 0.536 -0.219 1.738 1.032 1.651 -0.691 -1.464 -1.853 2.699 -1.877 0.729 1.473 -0.463 2.214 3.308 -3.059 0.940 1.816 -0.361 -3.729 4.298 -0.345 -2.860 -2.560 4.291 -1.150 1.891 -1.275 0.879 0.305 0.629 -0.593 3.108 0.057 -0.424 0.530 -0.982 1.095 -1.330 2.820 -1.824 -1.933 -2.049 0.038 0.633 -4.914 0.971 0.623 -1.487 -0.266 -1.472 0.564 1.976 0.698 -0.591 0.953 1.351 -0.667 5.556 2.483 1.124 0.399 0.527 0.971 2.901 -0.717 -1.573 1.947 -1.244 -2.367 0.085 -1.179 1.645 -2.796 0.430 0.616 1.947 0.859 2.694 -1.231 -0.872 -3.627 -3.140 0.510 0.931 -0.172 -0.030 -1.554 -2.286 0.975 3.240 -2.114 0.052 0.555 3.234 -1.966 -1.021 -0.802 26.609 dog 牛 0.375 -0.224 -1.080 1.432 0.462 -0.123 0.754 -0.054 2.271 -0.417 0.137 1.571 -0.209 0.599 0.997 0.505 0.238 2.033 2.714 -2.575 -2.410 -0.162 -1.019 -3.306 1.528 0.823 2.800 2.928 0.622 0.017 0.096 -0.729 -3.745 -0.660 -0.109 0.222 2.469 -2.065 0.459 -1.502 0.604 4.011 0.807 0.039 -1.129 -0.979 -0.222 1.139 -0.538 -0.751 1.180 -2.987 1.020 0.925 1.622 0.788 -0.907 0.454 -1.525 -1.905 0.865 -1.311 0.936 0.258 2.375 -0.773 -1.405 2.355 0.112 -0.241 0.264 1.469 -0.606 -3.029 2.170 0.371 0.141 -0.120 -0.183 -0.960 -1.166 1.787 -2.459 0.108 1.250 -0.795 0.245 1.559 -3.031 -0.423 2.414 0.028 2.510 0.396 1.152 0.549 1.203 3.079 2.280 0.462 0.240 -1.844 0.084 -1.201 -0.670 1.656 2.658 -4.303 -2.689 -0.434 2.695 0.884 -0.471 0.027 0.995 0.799 -1.095 -3.325 -1.016 2.218 1.765 -3.149 1.604 0.299 -0.865 -2.435 -0.885 -2.454 0.565 -0.234 0.724 0.146 0.349 -1.368 0.749 0.049 -1.202 1.442 -1.367 0.597 -0.809 0.076 -1.806 -2.504 -2.485 0.135 2.199 -1.339 -0.769 2.270 1.255 -1.351 -1.093 1.918 1.466 -1.094 -1.170 -0.434 -0.202 -0.780 1.588 2.384 0.757 -1.228 -0.538 1.378 -1.263 -2.130 -1.343 1.022 -1.351 -1.166 0.494 -3.218 2.064 1.838 -1.735 -1.375 0.490 1.345 1.097 -0.636 -0.636 0.273 -1.214 0.744 0.426 2.190 -1.452 0.910 -2.682 1.985 1.730 -0.116 -0.314 1.606 2.550 -1.868 -1.495 0.297 21.732 cattle/bull/ox/cow 猪 2.184 0.879 -2.821 0.895 0.566 -1.491 0.900 -0.096 1.693 -1.248 0.129 0.131 -0.107 0.762 -1.224 0.732 3.362 2.740 0.268 -0.366 -1.054 -0.338 -0.440 -2.950 0.174 -0.806 2.972 2.067 1.729 -0.472 -0.191 -1.078 -2.925 0.451 -0.087 1.461 1.567 -1.669 -0.269 -2.142 2.872 1.423 -0.944 -0.259 1.271 -2.567 -0.011 1.175 -0.541 0.129 1.465 -3.364 1.776 1.264 -1.854 0.174 -1.087 1.187 0.112 0.034 1.483 -1.207 -0.948 -0.301 0.720 0.308 -0.861 0.082 -0.035 0.512 -0.125 2.395 1.054 -2.454 -0.142 0.011 -0.466 1.106 -0.330 -0.541 -0.026 0.110 -1.810 1.489 2.966 1.810 1.164 0.382 0.126 -0.027 2.518 0.067 2.170 -0.949 1.000 0.869 -0.524 2.347 -0.236 -1.427 -0.445 -0.457 2.864 -2.115 -1.087 2.818 0.801 -1.949 -0.981 -0.609 2.436 0.375 -0.397 0.106 0.174 1.511 0.682 -1.826 2.511 0.574 0.692 1.006 -0.082 -0.700 -1.517 -1.843 1.838 -1.891 1.738 -1.160 0.765 -0.360 2.746 -0.681 2.210 0.112 -1.585 1.415 -1.293 0.840 -1.159 0.636 -0.602 -1.238 -2.561 -0.025 1.520 0.249 -0.572 2.009 1.566 -0.543 0.562 1.591 1.587 0.568 0.398 -0.954 0.464 0.158 2.244 0.988 -0.858 0.084 0.122 1.334 -2.765 -0.630 -0.249 2.094 -1.475 0.914 -0.123 -1.725 1.866 -1.341 -0.519 -0.856 0.793 0.320 0.510 -2.182 0.962 0.765 -0.176 1.550 0.195 1.684 -0.963 1.092 0.644 2.803 1.957 1.118 -0.965 0.964 0.234 1.568 -2.743 -0.565 19.666 wild_pig 鴨 -0.864 -0.834 -1.071 1.142 -0.718 -1.659 -2.888 -0.402 -0.687 -1.153 0.238 -1.547 -0.152 0.482 1.914 0.326 -0.165 1.695 2.142 -0.735 -0.723 0.692 1.324 -0.456 -1.045 -1.016 2.108 1.676 -1.466 -0.642 1.467 -0.536 -1.495 1.145 0.762 0.254 0.770 -0.465 -0.827 -1.778 0.652 -0.060 -0.659 1.542 1.109 -1.943 0.619 0.160 -0.377 0.512 0.752 -1.799 -0.183 -0.710 1.064 1.073 -1.018 -0.907 0.787 -2.305 -0.835 -0.196 -1.949 -1.037 -0.135 0.178 0.086 3.238 -0.237 -1.450 1.129 0.731 -1.696 -0.936 1.273 -0.195 -2.977 1.857 0.590 -0.253 0.539 0.142 -0.430 1.803 0.353 0.713 -0.021 -1.736 1.102 -0.454 0.473 -0.010 1.759 -0.947 1.500 0.319 1.174 0.577 -0.373 -3.681 -0.658 -0.334 0.742 -1.996 2.491 1.789 0.554 0.828 0.571 1.984 2.725 1.569 -0.762 1.231 1.169 -0.822 0.192 -1.892 0.245 -1.371 -0.983 -1.592 0.443 0.914 0.476 -0.384 2.341 -0.189 -1.138 0.732 1.609 0.241 0.655 -1.004 -0.853 0.394 1.457 2.543 -0.651 0.326 0.258 2.534 1.363 -0.285 -1.974 0.862 -0.460 -2.448 0.818 -0.014 0.625 -0.838 1.282 1.218 -1.263 0.780 1.351 -0.170 -1.329 -0.410 1.589 3.300 0.260 0.387 -1.898 1.159 -3.470 -1.603 -1.778 -0.941 -1.222 2.248 2.104 -0.141 1.235 0.126 2.290 -1.288 1.335 -1.551 3.533 -3.657 -0.658 1.716 -0.990 1.984 0.943 3.860 -0.610 1.722 -3.276 2.515 1.326 -1.807 0.202 0.271 2.796 0.937 -2.654 -0.471 19.969 wild_duck/drake

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

解決しました。

投稿2015/04/29 00:31

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問