主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

データベース再考(GoogleAppEngine データストア) その2

                
tags:
データベース再考(GoogleAppEngine データストア)

 前の記事で、インデックスを作るために形態素解析を使うことを考えた。でもそもそも、形態素解析なんぞ使わなくてもタイトル文字列を以下のように、あらゆる場所からバラバラに区切ってしまえばインデックスは作れる。
"ABC" → ['A', 'AB', 'ABC', 'B', 'BC', 'C']

 このバラバラに区切る方法でインデックスを作るメリットは、キーワードが多少欠落していても引っかかるインデックスが作れる。”ノルウェイの森”を度忘れして、”ウェイ” AND ”森”で検索しても引っかかるインデックスが作れる。

 ではデメリット。形態素解析で分けた場合に比べ、インデックスデータが膨大になりやすいということ。バラバラ区切りのインデックス要素数をちょっと粗く計算すると、”文字数×文字数÷2”になる。”皇帝の新しい心―コンピュータ・​心・物理法則”なら要素数は251個だ。これをYahoo形態素解析にかけると要素数は11個だ。差は歴然だ。

 まあ一応、インデックスとして使えるリスト作成関数を書いたので記しておく。
def str2list(str):
li_index = []
for x in range(len(str)):
str_split = str[x:]
li_split = [str_split[0:y+1] for y in range(len(str_split))]
li_index += li_split

li_index = list(set(li_index))
li_index.sort()
return li_index

str = u"天才の脳科学―創造性はいかに創られるか "
li = str2list(str)
for x in li:
print x
            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。