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

私は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来世150xsites15
だから45926成長した1499屋台150悲劇15
すべて44672高い1499アル150Atcal15
それは42825ディープ1499ラムズ150おいしい15
彼は42154積極的に1499シフトした150貝類15
あなたは38073奇跡1498レーザー150ハニー15
35976説明する1498コンベア150時間外科医15
でも35900鳴った1498ブルネット150いわしゅり15
彼の35394突入1498女子学生150加速器15
どうやって343471498泥棒150振動15
私に340781498スカウト150五arch星15
そして33836作品1498生理的150ゴーシン15
彼女は31373大丈夫1498詩的な150ロイド15
大丈夫30932不満1498引き上げた150マーシャル15
あなたは30738ドル1497シリンダー15015
こっち29969呼ばれた1497トリプル15015
そこにある29579回った1497討論150クロノゲン15
だった29297引っ張った1497最低150コバリャフ15
でも29009シャンパン1497特徴的150ヤギャ15
そこに28955爆弾1497プラーク150エネルギー情報15
まあ28612要求された1496150コンソートライン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乏しい150g者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
私たち219501491霧深い150コトレチナ15
21763ジャンプする1491チェックアウト150スプリウス15
21740想像する1491無関心150ROBUSGROBUS15
私自身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潜った1489150ダンク15
人生の20517帰る1489横行150レギアラ15
について205161489文明150チャーロック15
かどうか20450アップ1489スキャンダラス150真冬15
もっと20328電話する1489イギリス人150アグロド15
と言う20318忠実1489抗議した150ゾリク15
自分に20299置き換えられた1488絞め殺す150アウトランド15
より20291真面目な1488丸い150ビアルタ15
それから20244シフト1488150レナルド15
良いです20047ウラジミール1488それから150サモネンコ15
あなたに20024雰囲気1487ock笑150デュシュカ15
さらに19819逃げました1487限界150モルフィチェフ15
どこで19600反対1487ro音150ヴァリキン15
19545マント1487悪魔の150げっ歯類15
する19525いびき1487150コンク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親密な150Bepe15
質問18276セッティング1485食べ物150クラスプ15
戻る18186時間がある1485価値がない150購入15
私たちに18167振る舞い1485震えた150クプリンガ15
または18155件名1485新着150ストロック15
そのような18116結果1485150モスキーナ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

Source: https://habr.com/ru/post/J138172/


All Articles