メールの詳細(トピック表示)
新 ejSplitter-0.3
投稿者: さん 2004/01/08 22:53 MLNo.527 [メール表示]
今野です
新しい (encodeを外した) ejSplitter-0.3 と古いもので試してみました。
ejSplitter と 文字コード変えるたび (合計 4 回) zope をリスタートしてます。
"aiueoあいうえお" とだけ書いた DTML Document があるフォルダで試してみました。
新 ejSplitter は euc-jp では問題が見付かりませんでした。
utf-8 ではエラーが出ました。
(試験方法はシグネチャ以降に添付します)
---+--------+-------+----------+---------+---------+-------+---------+
| \キー| 空白 |あいうえお| あ* |あいう | a* | aiueo |
===*========*=======*==========*=========*=========*=======*=========*
新 | euc-jp | aiueo | aiueo | aiueo |(なし) | aiueo | aiueo |
+--------+-------+----------+---------+---------+-------+---------+
| utf-8 | aiueo |●(err-1) | aiueo |●(err-1)| aiueo |●(err-1)|
---+--------+-------+----------+---------+---------+-------+---------+
旧 | euc-jp | aiueo | aiueo |●(err-2)|●aiueo | aiueo | aiueo |
+--------+-------+----------+---------+---------+-------+---------+
| utf-8 | aiueo | aiueo |●(err-2)|(なし) | aiueo | aiueo |
---+--------+-------+----------+---------+---------+-------+---------+
●(err-1):
Error Type: TypeError
Error Value: decoding Unicode is not supported
●(err-2):
Error Type: UnicodeError
Error Value: ASCII decoding error: ordinal not in range(128)
On Thu, 08 Jan 2004 19:22:24 +0900
Hajime Nakagami <nakagami@…> wrote:
環境は zope-2.6.2, python-2.1.3, Vine2.6r3相当(kernel-2.4.22)です
# スレッド長くなって見辛いかと思い変えました
--
Shu KONNO
http://owa.as.wakwak.ne.jp/zope
∞∞∞∞∞∞∞∞ 試験方法 ∞∞∞∞∞∞∞∞
■ 0. ディレクトリ
/SplitterTestEUC --- management_page_charset を euc-jp に設定
/SplitterTestUTF --- management_page_charset を utf-8 に設定
■ 1.1 フォルダ作成
/SplitterTestEUC/MyCatalog --- ZCatalog インスタンス
/SplitterTestEUC/aiueo --- DTML Document (中身は「aiueoあいうえお」のみ)
■ 1.2 ZCTextIndex Lexicon を作成
/SplitterTestEUC/MyCatalog/lexicon --- ZCTextIndex Lexicon
id: lexicon
title: なし
Case Normalizer: チェック (デフォルト)
Stop Words: Don't remove stop words (デフォルト)
Word Splitter: ejSplitter for Japanese(euc-jp) を選択
■ 1.3 Find Objects を実行
Find objects of type: DTML Document のみを選択
他はデフォルトのまま [Find and Catalog] をクリックすると
Catalog タグに自動で移動して
Object Identifier Type
----------------------------------------
[ ] /SplitterTestEUC/aiueo Unknown
と表示される (zope2.5.3 では type がちゃんと表示されたが...)
■ 1.4 Indexes を実行
ZCTextIndex を選択し [Add] をクリックする
id: PrincipiaSearchSource
Field name: なし
Ranking Strategy: Okapi BM25 Rank (デフォルト)
Lexicon: lexicon (デフォルト)
と指定し、再度 [Add] をクリックする
PrincipiaSearchSource をチェックし [Reindex] をクリックすると
Object のカウントに 2 が立つ。
■ 1.5 Python Script を使い検索する
/SplitterTestEUC/searchCatalog --- Python Script
/SplitterTestEUC/showSimpleResut --- DTML Method
(http://www.freeml.com/message/zope-memo@…/0000525 で投稿したもの)
■ 2.1, 2.2, ... 2.5 euc-jp を utf-8 に替えてテストする
∞∞∞∞∞∞∞∞ おわり ∞∞∞∞∞∞∞∞
読み込み中...- MLNo.528 さん (0) 2004/01/10 18:56 [メール表示する]
-
MLNo.529
Hajime Nakagamiさん
(0) 2004/01/10 20:14 [メール表示する]

中神です。
なるほど、私の修正ミスですね。
バージョン番号の上げ方に一貫性がなくなってきましたが、
ejSplitter-0.3.1.tar.gz として、公開しました。
http://www005.upp.so-net.ne.jp/nakagami/tips/ZCTextIndex.html#ejSplitter
これでよろしいでしょうか?---->All
>今野です
>
>柴田さんに教わった方法で UTF-8 でも検索できるようになりました。
>http://mail.webcore.co.jp/pipermail/coreblog/2004-January/000044.html
>
>いろいろありがとうございました。

-
MLNo.531
"kf"さん
(0) 2004/01/13 22:15 [メール表示する]

こんにちは、深町です。
> ejSplitter-0.3.1.tar.gz として、公開しました。
> http://www005.upp.so-net.ne.jp/nakagami/tips/ZCTextIndex.html#
> ejSplitter
>
> これでよろしいでしょうか?---->All
http://www.atransia.co.jp/home/Purloined に入れてみました。
ついでに、ejSplitter は 「ポー」の場合「ー」がつながってくれずに「ポ」「ー」
のように分割
されてしまうのが気に入らなかったので、(「ページ」などもそうなのですが)
文脈依存のコードを入れてみました。
何をしたかというと、全角の「〜」「ー」の場合は、前の文字と同じ文字種別という
ことで
扱う ZEN_DEPEND という種別を作り、前の文字が全角ひらがなか、カタカナだった
ら、
それにしたがうというものです。同じように半角バージョンを入れてもいいかもしれ
ません。
これをやらないでばらけたままだと、よけいなものがマッチしてしまうことがあるの
が
気に入らなかったわけです。あとは、切り方としてもなんですし。
ただ、よけいなものがマッチしても、たくさん検索結果に出てきた方がいいというの
であれば、入れる必要はないですが(笑)
ejSplitter は、こうしたヒューリスティックルールをもっと追加していけば、
理屈上もっと賢くすることができると思います。
diff -r ejSplitter.orig/SplitJapanese.py ejSplitter/SplitJapanese.py
39a40,46
> if new_state == char_map.ZEN_DEPEND:
> if char_state == char_map.ZEN_KANA \
> or char_state == char_map.ZEN_HIRA:
> new_state = char_state
> else:
> new_state = char_map.DELM
>
48a56
>
diff -r ejSplitter.orig/char_map.py ejSplitter/char_map.py
35a36
> ZEN_DEPEND = 6 # context dependent zenkaku character
74a76,78
> #ZEN_DEPEND
> depend_codes = [0xFF5E, 0x30FC]
>
108a113,117
> #ZEN_DEPEND
> for chcode in depend_codes:
> char_class[chcode] = ZEN_DEPEND
>
>
--
Kazuya Fukamachi
http://www.atransia.co.jp/home/ZenKai/
日記 http://www.atransia.co.jp/home/fukamachi
COREBlog使用中 http://www.atransia.co.jp/home/Purloined

-
MLNo.532
Hajime Nakagamiさん
(0) 2004/01/14 06:26 [メール表示する]

ありがとうございます。
内部的な CVSリポジトリには、反映しておきました。
(深町さんがつけてくれたパッチの*まま*で、半角云々はやってませんが)
私は、専門外ですが、こういうことを専門で学んだり、仕事をしたり
#と、いうひとがそんなにたくさんいるのかどうか知りませんが
した人には、常識的なロジックというのが、まだまだいくつもありそうですね。
(中点/中黒 とか、句読点の扱いに、もっと工夫の余地がありそうな予感)
ejSplitter をベースに、
(辞書を使わない)もっとおりこうなSplitter をどっかの
学生が書いてくれないかなぁとか、
(この程度じゃ、卒論のテーマにはならんのですかねぇ)
韓国語とか、中国語とかに対応してくれないかなぁ
(これは、その言葉を読み書きできれば簡単にできそう)
とは思ってはいるのですが、いまのところ、ejSplitter のわかち書きの
ロジック部分のコードを読んでいるのは、深町さんだけでしょうね
以上
>こんにちは、深町です。
>
>> ejSplitter-0.3.1.tar.gz として、公開しました。
>> http://www005.upp.so-net.ne.jp/nakagami/tips/ZCTextIndex.html#
>> ejSplitter
>>
>> これでよろしいでしょうか?---->All
>
>http://www.atransia.co.jp/home/Purloined に入れてみました。
>
>ついでに、ejSplitter は 「ポー」の場合「ー」がつながってくれずに「ポ」「ー」
>のように分割
>されてしまうのが気に入らなかったので、(「ページ」などもそうなのですが)
>文脈依存のコードを入れてみました。
>何をしたかというと、全角の「〜」「ー」の場合は、前の文字と同じ文字種別という
>ことで
>扱う ZEN_DEPEND という種別を作り、前の文字が全角ひらがなか、カタカナだった
>ら、
>それにしたがうというものです。同じように半角バージョンを入れてもいいかもしれ
>ません。
>
>これをやらないでばらけたままだと、よけいなものがマッチしてしまうことがあるの
>が
>気に入らなかったわけです。あとは、切り方としてもなんですし。
>ただ、よけいなものがマッチしても、たくさん検索結果に出てきた方がいいというの
>であれば、入れる必要はないですが(笑)
>
>ejSplitter は、こうしたヒューリスティックルールをもっと追加していけば、
>理屈上もっと賢くすることができると思います。

-
MLNo.534
Hajime Nakagamiさん
(0) 2004/01/15 04:45 [メール表示する]

中神です。
別に、隠しておく意図はないので、ejSplitter-0.4.tar.gz を公開します
http://www005.upp.so-net.ne.jp/nakagami/tips/ZCTextIndex.html#ejSplitter
(手動パッチ、未テストですが)
>ありがとうございます。
>
>内部的な CVSリポジトリには、反映しておきました。
>(深町さんがつけてくれたパッチの*まま*で、半角云々はやってませんが)
以上

-
MLNo.535
Kiyoharu Uenoさん
(0) 2004/01/15 10:03 [メール表示する]

上野です。
> 中神です。
>
> 別に、隠しておく意図はないので、ejSplitter-0.4.tar.gz を公開します
> (手動パッチ、未テストですが)
ejSplitter-0.4.tar.gz を入れてみました。
SplitJapanese.py の40行目
if new_state == char_map.ZEN_DEPEND:
でエラーがでてました。
内容は理解できていませんのでこれで良いか解りませんが
字下げがあってないようでした。

-
MLNo.536
Hajime Nakagamiさん
(0) 2004/01/15 19:55 [メール表示する]

中神です。
失礼をばいたしました。
ejSplitter-0.4.tar.gz を置き換えておきました。
確認してみて下さい。
以上
>上野です。
>
>> 中神です。
>>
>> 別に、隠しておく意図はないので、ejSplitter-0.4.tar.gz を公開します
>> (手動パッチ、未テストですが)
>
>ejSplitter-0.4.tar.gz を入れてみました。
>
>SplitJapanese.py の40行目
>if new_state == char_map.ZEN_DEPEND:
>でエラーがでてました。
>
>内容は理解できていませんのでこれで良いか解りませんが
>字下げがあってないようでした。


