フリバスト図書館によると、ロシア語で最も一般的な文構造

私はphpプログラマですが、新しいことを学ぶために視野を広げたいと思いました。 したがって、私は他の言語と技術を学ぶことにしました。 これまでのところ、選択はperl、python、mysqlに落ちています。



彼らは素晴らしいpymorphyパッケージ、 Flibustライブラリ(.fb2のみ)、 fb2を保存するためのsedna、統計と小さなファイルを保存するためのmysql percona 5.1を取りました 。 原始的なmyisamプレートが作成され、文が記録され、この文のスピーチの部分の説明が作成されました。



説明によれば、一意のテキストインデックスを作成しましたが、数値フィールドでインデックスを作成するのを忘れていました(役に立たないと思いました)。



フィリバスターのFb2はセドナデータベースに配置され、ベースは90 GBのどこかにあることが判明しました。



最初のステップでは、ライブラリで見つかったすべての一意の単語を収集しました。 約1400万語になりました。 これらはユニークな言葉とその形、そして他のゴミでした。



pickleモードでのpymorphyは初期化に非常に多くの時間を費やし、PHPからシェルを介してプルするのに非常に長い時間がかかることが実験的にわかっています。 pythonを習い始めたばかりで、pymorphyを使用する必要があったスピーチの一部を取得するために、後者をサーバーとして実行することにしました。 これにより、長い初期化の問題が解消されました。これは、およそ次のように発生しました。



#!/usr/bin/env python <br/>

# -*- coding: utf-8 -*- <br/>

from pymorphy import get_morph<br/>

import re , sys , socket , pprint ,json,chardet, ConfigParser <br/>

<br/>

def do_word ( data ) :<br/>

if ( data == False or data == '' ) : print "error incoming data !!!" <br/>

tmpWord = re . sub ( r "rn" , '' ,data ) <br/>

word = tmpWord. decode ( 'utf-8' ) . upper ( ) <br/>

if ( DEBUG == 1 ) : print word<br/>

info = morph._decline ( word ) <br/>

if ( DEBUG == 1 ) : pprint . pprint ( info ) <br/>

sjSon = json. dumps ( info ) <br/>

return sjSon<br/>

<br/>

config = ConfigParser . ConfigParser ( ) <br/>

config. read ( 'pymorphy_conf.ini' ) <br/>

DEBUG = config. getint ( 'decline' , 'DEBUG' ) <br/>

HOST = config. get ( 'decline' , 'HOST' ) <br/>

PORT = config. getint ( 'decline' , 'PORT' ) <br/>

<br/>

morph = get_morph ( "/pymorphy/dicts/converted/ru/morphs.pickle" , 'pickle' ) <br/>

<br/>

srv = socket . socket ( socket . AF_INET , socket . SOCK_STREAM ) <br/>

srv. bind ( ( HOST,PORT ) ) <br/>

while 1 :<br/>

if ( DEBUG == 1 ) : print " " ,PORT<br/>

srv. listen ( 1 ) <br/>

sock,addr = srv. accept ( ) <br/>

while 1 :<br/>

pal = sock. recv ( 1024 ) <br/>

if not pal:<br/>

break <br/>

lap = do_word ( pal ) <br/>

sock. send ( lap ) <br/>

sock. close ( )











次に、この即興サーバーを参照して、彼は以前に見つかった単語の品詞を書き留めました。 これはすべて夕方に行われ、それほど困難を引き起こしませんでした。



その後、最も簡単なことは統計を収集することです。 私は2ヶ月間それを集めました、その後、私は疲れました。 ボトルネックになったことは言うのが難しいです。 単語のスピーチの一部を検索する〜0.0046秒、残りの操作も正常です。単語をすばやく組み立てることができたからです。 セドナも前の段階でテストされ、飛行しませんでしたが、数時間で彼女から言葉を集めることができたので、彼女のパフォーマンスはオファーに関する統計を収集するのに十分でした。

その結果、次のデータが得られました。



画像





補足

によると(このデータはフリバスタだけではなく、他のテキストも少し混ざっています)



トップ 1500および

少ない
150および

少ない
15以下
いや 60300 窓辺 1500 ナチス 150 アイヒ 15
私は 53847 木造 1500 曲がった 150 ランター 15
はい 50813 落とした 1499 ジュレ 150 ブトフサン 15
なに 48819 名前 1499 来世 150 xsites 15
だから 45926 成長した 1499 屋台 150 悲劇 15
すべて 44672 高い 1499 アル 150 Atcal 15
それは 42825 ディープ 1499 ラムズ 150 おいしい 15
彼は 42154 積極的に 1499 シフトした 150 貝類 15
あなたは 38073 奇跡 1498 レーザー 150 ハニー 15
35976 説明する 1498 コンベア 150 時間外科医 15
でも 35900 鳴った 1498 ブルネット 150 いわしゅり 15
彼の 35394 突入 1498 女子学生 150 加速器 15
どうやって 34347 1498 泥棒 150 振動 15
私に 34078 1498 スカウト 150 五arch星 15
そして 33836 作品 1498 生理的 150 ゴーシン 15
彼女は 31373 大丈夫 1498 詩的な 150 ロイド 15
大丈夫 30932 不満 1498 引き上げた 150 マーシャル 15
あなたは 30738 ドル 1497 シリンダー 150 15
こっち 29969 呼ばれた 1497 トリプル 150 15
そこにある 29579 回った 1497 討論 150 クロノゲン 15
だった 29297 引っ張った 1497 最低 150 コバリャフ 15
でも 29009 シャンパン 1497 特徴的 150 ヤギャ 15
そこに 28955 爆弾 1497 プラーク 150 エネルギー情報 15
まあ 28612 要求された 1496 150 コンソートライン 15
何もない 28605 考えている 1496 追放された 150 分析 15
事業 27653 喜び 1496 遺伝的 150 サイスフィア 15
同じ 26973 検査する 1496 記念日 150 鍛造 15
こっち 26898 達した 1495 老人 150 リフレシアン 15
まだ 26640 のソース 1495 荒れ地 150 リフレシアン 15
彼女 26556 回った 1495 たまねぎ 150 スレイヤー 15
26415 上げた 1495 発電機 150 レビコフ 15
26408 抜いた 1495 気取らない 150 グレンケ 15
する必要がある 25657 灰色の 1495 ラッパー 150 いらし 15
もちろん 25568 不幸 1494 食欲をそそる 150 カムラ 15
なんで 25216 見た 1494 回った 150 アルバロヘ 15
5月 25012 驚くほど 1494 兆候 150 ワンドゥク 15
私たちは 24847 おじ 1493 盗聴 150 シェフアタッフェ 15
知ってる 24843 チェック 1493 ゴキブリ 150 タルハノフ 15
彼らは 24070 招待状 1493 乏しい 150 g者 15
あなたは 23922 重い 1493 清算 150 オルヌムコニオロフ 15
23600 介入する 1493 前例のない 150 ガンファレス 15
時間 23598 確かに 1493 意図した 150 ガメリナム 15
彼らの 22956 見た 1493 利益 150 ウラジュノム 15
あなたは 22780 継続 1492 給餌 150 エラタ 15
それから 22730 反対した 1492 コメントする 150 ウラジュヌ 15
22508 全体 1492 シックな 150 草食動物 15
22488 アイボグ 1492 企業 150 ハレンズ 15
じゃない 22450 始めます 1492 ウィグル 150 ジアジラ 15
あなたに 22107 スナップショット 1492 ドロスドフ 150 コトレキン 15
彼に 22014 理解する 1491 有効な 150 ブラックマジック 15
言った 21970 会議 1491 従う 150 ドゥルネヴ 15
私たち 21950 1491 霧深い 150 コトレチナ 15
21763 ジャンプする 1491 チェックアウト 150 スプリウス 15
21740 想像する 1491 無関心 150 ROBUSGROBUS 15
私自身 21656 なぞなぞ 1491 常習的 150 よは 15
なります 21642 バジル 1491 と呼ばれる 150 テトラゾアクル 15
21576 鳴った 1490 バレリアン 150 ヤラアト 15
それから 21438 接続された 1490 のように見えた 150 マゴロディ 15
であるために 21415 静かに 1490 コア 150 リグロム 15
人々 21368 遅い 1490 応答する 150 ラマ 15
人生 21322 昨日 1489 描かれた 150 ヴァルナナ 15
真実 20972 薄い 1489 可聴 150 ベリリア 15
20645 言った 1489 はしご 150 ニムロベツ 15
のみ 20603 潜った 1489 150 ダンク 15
人生の 20517 帰る 1489 横行 150 レギアラ 15
について 20516 1489 文明 150 チャーロック 15
かどうか 20450 アップ 1489 スキャンダラス 150 真冬 15
もっと 20328 電話する 1489 イギリス人 150 アグロド 15
と言う 20318 忠実 1489 抗議した 150 ゾリク 15
自分に 20299 置き換えられた 1488 絞め殺す 150 アウトランド 15
より 20291 真面目な 1488 丸い 150 ビアルタ 15
それから 20244 シフト 1488 150 レナルド 15
良いです 20047 ウラジミール 1488 それから 150 サモネンコ 15
あなたに 20024 雰囲気 1487 ock笑 150 デュシュカ 15
さらに 19819 逃げました 1487 限界 150 モルフィチェフ 15
どこで 19600 反対 1487 ro音 150 ヴァリキン 15
19545 マント 1487 悪魔の 150 げっ歯類 15
する 19525 いびき 1487 150 コンク 15
もし 19522 先輩 1487 スリッパ 150 グローリス 15
19444 始まった 1487 呼ばれた 150 レベディンスカヤ 15
19444 ラグ 1487 ミネラル 150 ワリュイショク 15
家で 19361 カップル 1487 伝統 150 欲しかった 15
19096 引き返す 1487 シャットダウン 150 シャア 15
言葉 19026 わかりにくい 1487 たけと 150 グギマ 15
することができます 18966 好意的に 1487 冒険家 150 グロング 15
これの 18860 未亡人 1487 ロマンチックな 150 オーバーボルチク 15
18772 間違えた 1486 シープスキンコート 150 ベッカム 15
なんで 18730 与えた 1486 感動 150 どうやって 15
人の 18680 与えた 1486 硬化した 150 クテバノワ 15
18583 待って 1486 塗装済み 150 掘り 15
だった 18450 新鮮な 1486 責任者 150 ストロバッハ 15
するだろう 18438 新鮮な 1486 文化的な 150 ゾーン 15
意地悪 18361 写真 1486 ブレンド 150 ブリーフケース 15
人の 18312 奴隷 1486 読む 150 ラエル 15
18293 提灯 1485 親密な 150 Bepe 15
質問 18276 セッティング 1485 食べ物 150 クラスプ 15
戻る 18186 時間がある 1485 価値がない 150 購入 15
私たちに 18167 振る舞い 1485 震えた 150 クプリンガ 15
または 18155 件名 1485 新着 150 ストロック 15
そのような 18116 結果 1485 150 モスキーナ 15




合計で、90 611 059件のオファーが処理されました。



すぐに数値フィールドにインデックスを作成するのを忘れて、深刻な問題にぶつかりました。 5800万件のレコードと12 GBのサイズのテーブルを取得した後、インデックスは1日以上にわたって作成され、決して作成されませんでした。 抜け出し

myisam_sort_buffer_size=1024MB





1 GBに設定され、インデックスは数時間で作成されます。



追伸 サーバー構成:AMD Athlon(tm)II X4 635プロセッサー、16 GB DDR3、WDC WD7500AACS-00D6B1



All Articles