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

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

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

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Unicode

Unicodeはエンコーディングの標準規格です。1つの文字コード体系で多国語の表現を可能にすることを目指して作られています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1154閲覧

Unicodeのコードポイント頻度測定

BASEBALL-Y

総合スコア67

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Unicode

Unicodeはエンコーディングの標準規格です。1つの文字コード体系で多国語の表現を可能にすることを目指して作られています。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/01/08 14:13

編集2020/01/09 04:55

以下のコードをprint()で確認すると,以下の結果になったのですが,
#質問内容①
これは,何を表しているのですか?

#質問内容②
各要素を文字数で正規化するのは,何のために行っているのですか?

お手数をお掛けしますが,回答お願い致します.
一番下に,全体のコードを記載しています.

#質問箇所

Python

1#Unicodeのコードポイント頻度測定 2def count_codePoint(str): 3 #Unicodeのコードポイントをアドレスをする配列を用意 4 counter = np.zeros(65535) 5 6 for i in range(len(str)): 7 #各文字をUnicodeのコードポイントに変換 8 code_point = ord(str[i]) 9 if code_point>65535: 10 continue 11 #対応するアドレスの出現回数をインクリメント 12 counter[code_point] +=1 13    #上のコードが何を表しているのかを確認する為に,print()を行った. 14 print(i) 15 print(code_point) 16 print(counter[code_point],"\n") 17 18

#結果

Python

10 212371 31.0 4 51 612428 71.0 8 92 1012399 111.0 12 133 1426085 151.0 16 174 1826412 191.0 20 215 2235486 231.0 24 256 2612398 271.0 28 297 3025991 311.0 32 338 3431456 351.0 36 379 3812391 391.0 40 4110 4212377 431.0 44 4511 4612290 471.0 48 490 5084 511.0 52 531 54104 551.0 56 572 58105 591.0 60 613 62115 631.0 64 654 6632 671.0 68 695 70105 712.0 72 736 74115 752.0 76 777 7832 792.0 80 818 8269 831.0 84 859 86110 871.0 88 8910 90103 911.0 92 9311 94108 951.0 96 9712 98105 993.0 100 10113 102115 1033.0 104 10514 106104 1072.0 108 10915 11032 1113.0 112 11316 11483 1151.0 116 11717 118101 1191.0 120 12118 122110 1232.0 124 12519 126116 1271.0 128 12920 130101 1312.0 132 13321 134110 1353.0 136 13722 13899 1391.0 140 14123 142101 1433.0 144 14524 146115 1474.0 148 14925 15046 1511.0 152 1530 1543609 1551.0 156 1571 1583637 1591.0 160 1612 1623656 1631.0 164 1653 1663648 1671.0 168 1694 1703611 1711.0 172 1735 1743655 1751.0 176 1776 1783609 1792.0 180 1817 1823611 1832.0 184 1858 1863619 1871.0 188 1899 1903632 1911.0 192 19310 1943650 1951.0 196 19711 1983618 1991.0 200 20112 2023588 2031.0 204 20513 2063616 2071.0 208 20914 2103634 2111.0 212 21315 2143625 2151.0 216 21716 2183634 2192.0 220 22117 2223652 2231.0 224 22518 2263607 2271.0 228 22919 2303618 2312.0 232 2330 23472 2351.0 236 2371 238101 2391.0 240 2412 242108 2431.0 244 2453 246108 2472.0 248 2494 250111 2511.0 252 2530 2543626 2551.0 256 2571 2583623 2591.0 260 2612 2623633 2631.0 264 2653 2663626 2672.0 268 2694 2703604 2711.0 272 2735 2743637 2751.0 276 2770 27812371 2791.0 280 2811 28212435 2831.0 284 2852 28612395 2871.0 288 2893 29012385 2911.0 292 2934 29412399 2951.0

#全体のコード

Python

1コード 2##利用されている文字が異なる言語を判定### 3import numpy as np 4from sklearn.naive_bayes import GaussianNB 5from sklearn.metrics import accuracy_score 6 7#Unicodeのコードポイント頻度測定 8def count_codePoint(str): 9 #Unicodeのコードポイントをアドレスをする配列を用意 10 counter = np.zeros(65535) 11 12 for i in range(len(str)): 13 #各文字をUnicodeのコードポイントに変換 14 code_point = ord(str[i]) 15 if code_point>65535: 16 continue 17 #対応するアドレスの出現回数をインクリメント 18 counter[code_point] +=1 19 print(i) 20 print(code_point) 21 print(counter[code_point],"\n") 22 23 24 #各要素を文字数で割って正規化 25 counter = counter/len(str) 26 return counter 27 28#学習用データの準備 29ja_str = "これは日本語の文章です。" 30en_str = "This is English Sentences." 31th_str = 'นี่เป็นประโยคภาษาไทย' 32 33x_train = [count_codePoint(ja_str),count_codePoint(en_str),count_codePoint(th_str)] 34""" 35print(x_train) 36""" 37y_train = ["ja","en",'th'] 38 39#学習する 40clf = GaussianNB() 41clf.fit(x_train,y_train) 42 43#評価データの準備 44ja_test_str = "こんにちは" 45en_test_str = "Hello" 46th_test_str = 'สวัสดี' 47 48x_test = [count_codePoint(en_test_str),count_codePoint(th_test_str),count_codePoint(ja_test_str)] 49""" 50print(x_test) 51""" 52y_test = ["en",'th',"ja"] 53 54#評価する 55y_pred = clf.predict(x_test) 56print(y_pred) 57print("正解率=",accuracy_score(y_test,y_pred))

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

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

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

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

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

guest

回答1

0

ベストアンサー

①は質問じゃありませんね。疑問点が書かれていません。

②は文書の大きさの影響を抑えるためでしょう。正規化というより「割合をパラメータにしている」と考えたほうがいいかと思います。

投稿2020/01/08 23:24

編集2020/01/08 23:25
quickquip

総合スコア11055

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問