fuzzy search on plone & search for east asian language

Post on 15-Jan-2015

240 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

©2013 CMScom info@cmscom.jp

Fuzzy Search on Plone and Search for East Asian Language

CMS communications Inc,Manabu TERADA terada@cmscom.jp

http://www.cmscom.jp 4 / Oct / 2013

Plone Conference 2013 in Brasilia

Who I am? (お前だれよ?)

©2013 CMScom info@cmscom.jp

•Manabu TERADA (寺田 学) @terapyon•Advisory Board Member of Plone Foundation•Chair of PyCon APAC 2013 in Japan•Owner of CMS communications Inc.•Member of Plone Users Group Japan

•Authors

1

Contents

©2013 CMScom info@cmscom.jp

•About Japanese Language and other Languages

•Fuzzy Search on Plone•About the product•Basic technology•Dependencies•Domo•Structure of the product•The plan of future

2

Language Questions

©2013 CMScom info@cmscom.jp

3

ありがとう Thank you Obrigado

Gracias 谢谢 감사 합니다

ขอบคุณ Спасибо شكرا

Language Questions

©2013 CMScom info@cmscom.jp

3

ありがとう日本語

Thank youEnglish

ObrigadoPortuguese

GraciasSpanish

谢谢

Chinese감사 합니다

Korean

ขอบคุณThai

СпасибоRussian

شكرا

Arabic

Language Questions

©2013 CMScom info@cmscom.jp

3

•Double bytes

ありがとう日本語

Thank youEnglish

GraciasSpanish

谢谢

Chinese감사 합니다

Korean

ขอบคุณThai

СпасибоRussian

شكرا

Arabic

ObrigadoPortuguese

Language Questions

©2013 CMScom info@cmscom.jp

3

•Double bytes

ありがとう日本語

Thank youEnglish

GraciasSpanish

谢谢

Chinese감사 합니다

Korean

ขอบคุณThai

СпасибоRussian

شكرا

Arabic

ObrigadoPortuguese

Language Questions

©2013 CMScom info@cmscom.jp

3

•Left to Right (LTR) or Right to Left (RTL)

ありがとう日本語

Thank youEnglish

GraciasSpanish

谢谢

Chinese감사 합니다

Korean

ขอบคุณThai

СпасибоRussian

شكرا

Arabic

ObrigadoPortuguese

Language Questions

©2013 CMScom info@cmscom.jp

3

•Left to Right (LTR) or Right to Left (RTL)

ありがとう日本語

Thank youEnglish

GraciasSpanish

谢谢

Chinese감사 합니다

Korean

ขอบคุณThai

СпасибоRussian

شكرا

Arabic

ObrigadoPortuguese

Language Questions

©2013 CMScom info@cmscom.jp

3

•No white space?

ありがとう日本語

Thank youEnglish

GraciasSpanish

谢谢

Chinese감사 합니다

Korean

ขอบคุณThai

СпасибоRussian

شكرا

Arabic

ObrigadoPortuguese

Language Questions

©2013 CMScom info@cmscom.jp

3

•No white space

ありがとう日本語

Thank youEnglish

GraciasSpanish

谢谢

Chinese감사 합니다

Korean

ขอบคุณThai

СпасибоRussian

شكرا

Arabic

ObrigadoPortuguese

Japanese

©2013 CMScom info@cmscom.jp

4

•Can you read this Japanese?

•私は寺田学です。日本の東京から来ました。ブラジルに来たのは初めてです。•I am Manabu TERADA. I came from Tokyo, Japan. I have come to Brazil for the first time.

•私 は 寺田 学 です。日本 の 東京 から 来ました。ブラジル に 来た のは 初めて です。

Japanese

©2013 CMScom info@cmscom.jp

4

•Japanese doesn’t have white space for splitting words.•Japanese has 3 different characters,•Hiragana, Katakana, Kanji•Hiragana and Katakana are each 50 characters•Kanji is over 2000 characters•Japanese has same homonym by different characters, and has different homonym by same character.

Japanese

©2013 CMScom info@cmscom.jp

4

•They are the same meaning.•Kyoto ← Roma-ji•京都 ← Kanji•きょうと ← Hiragana•キョウト ← Katakana

Japanese

©2013 CMScom info@cmscom.jp

4

•Can you read?•橋 → ハシ → Hashi•端 → ハシ → Hashi•箸 → ハシ → Hashi

•They are different meaning.•We can understand those by context.

Japanese and other Languages

©2013 CMScom info@cmscom.jp

4

•We have a lot of languages. •We have a lot of rules.•We have a lot of issues.

•I want to have any solutions in Plone.

Fuzzy Search on Plone

©2013 CMScom info@cmscom.jp

5

Fuzzy Search

Fuzzy Search on Plone

©2013 CMScom info@cmscom.jp

5

•Name: c2.search.fuzzy•1.0a5 (alpha release)

https://pypi.python.org/pypi/c2.search.fuzzyhttps://bitbucket.org/cmscom/c2.search.fuzzy

5 About

©2012 CMScom info@cmscom.jp

Fuzzy Search on Plone

©2013 CMScom info@cmscom.jp

5

•We want to get suggestions the same as Google.

•In the Intranet, we can NOT use Google.

Fuzzy Search on Plone

©2013 CMScom info@cmscom.jp

5

•NOT use Solr. I know Solr is working well, •But, it's difficult to install/configure/implement.

•And, I want to build own system.

Basic technology

©2013 CMScom info@cmscom.jp

6

•This system is not difficult.

•Keywords•Levenshtein Distance•Sorted list•Automata system

Basic technology

©2013 CMScom info@cmscom.jp

6

the Levenshtein distance is a string metric for measuring the difference between two sequences. Informally, the Levenshtein distance between two words is the minimum number of single-character edits (insertion, deletion, substitution) required to change one word into the other. The phrase edit distance is often used to refer specifically to Levenshtein distance. It is named after Vladimir Levenshtein, who considered this distance in 1965.[1] It is closely related to pairwise string alignments.

From WikiPedia: http://en.wikipedia.org/wiki/Levenshtein_distance

Basic technology

©2013 CMScom info@cmscom.jp

6

Levenshtein Distance•base word: “plone”

•Zero Distance•PLONE, Plone, pLone•One Distance•Phone, plene, plne, lone, ploneg, .....•Two Distance•one, plo, polne, ......

Basic technology

©2013 CMScom info@cmscom.jp

6

Sorted list•Ordered container (List) or \•Can get Order of words

Sorted Order from Unicode (by alphabet)

['Argentina', 'Australia', 'Brazil', 'Canada', 'China', 'European Union', 'France', 'Germany', 'India', 'Indonesia', 'Italy', 'Japan', 'Mexico', 'Russia', 'Saudi Arabia', 'South Africa', 'South Korea', 'Turkey', 'United Kingdom', 'United States']

for example (G20’s countries)

Basic technology

©2013 CMScom info@cmscom.jp

6

From @hiratara’s slide:http://www.slideshare.net/hiratara/levenshtein-automata

Basic technology

©2013 CMScom info@cmscom.jp

6

Levenshtein Automata

•I found a good blog entry:•“Damn Cool Algorithms: Levenshtein Automata”•http://blog.notdot.net/2010/07/Damn-Cool-Algorithms-Levenshtein-Automata•https://gist.github.com/Arachnid/491973

•It’s only using Python!!

Basic technology

©2013 CMScom info@cmscom.jp

6

Index•It create original index, like a Sorted List, when Plone content is being created or modified.

Search•Searching from original index when we input into search-box.•Correct spelling will be shown in original index in less distance.•Because, It can be shown inside Plone content.

Basic technology

©2013 CMScom info@cmscom.jp

6

•For example,•We want to show by one distance (it’s default).•From the G20 countries list.•Brezil → Brazil•Japon → Japan

•And, it use Automata system for increased speed.

Dependencies

©2013 CMScom info@cmscom.jp

7

We need only Python.

Dependencies

©2013 CMScom info@cmscom.jp

7

•We use MeCab for Japanese support.•Japanese don’t has white space for splitting word.•(same as Chinese and Koran)

Dependencies

©2013 CMScom info@cmscom.jp

7

•Support language•English and other European languages•MAYBE: Arabic

•Chinese and Korean•It’s need to work splitting system•I don’t know it.

Domo

©2013 CMScom info@cmscom.jp

8

•View the video on YouTubehttp://youtu.be/e5DHsF7Gi70

Structure of the product

©2013 CMScom info@cmscom.jp

9

•Index data will be stored in ZODB, it's List object.

•When it being created or modified, will update the List by sorted.•List is into Dict, Dict key is phonetic (or lower case in English), value is original word.

[{'argentina' : ['Argentina', 'argentina', 'ARGENTINA']}, {'australia': ['Australia']}, {'brazil' : ['Brazil]}, {'きょうと' : ['京都', 'キョウト']}]

Example Index data

Structure of the product

©2013 CMScom info@cmscom.jp

9

•Search •Checking the List from input word for less distance by automata system.

•It's shown the original word from list in Dict values under the search-box by JavaScript.

Structure of the product

©2013 CMScom info@cmscom.jp

9

for Japanese

•I'm using MeCab for splitting and getting phonetic.

•It's stored phonetic and original word. •Because Japanese has same homonym by different characters

The plan of future

©2013 CMScom info@cmscom.jp

10

•Now, I'm using ZODB for index storing.•I want to have a option, Storing to RDBMS. I'm trying to develop it.

•I want to support more language.•Please help me for more support languages.

Thanks

©2013 CMScom info@cmscom.jp

11

•Japanese & East Asian languages•We have any problems yet in Plone.•I think Plone is working well in multi languages.•I wish Plone will be continuous working well.•All developers, you never forget other languages.

•Fuzzy search•I want to get the bug report.•Please try to use the product.

13 Contact me

©2012 CMScom info@cmscom.jp

• Twitter: @terapyon

• Facebook: https://www.facebook.com/terapyon

top related