2010-08-03 4 views
0

내가 그들 사이의 의미 적/어휘의 유사성을 기준으로 검색을 수행하고 싶은 작은 사전 데이터베이스를 구현하고 있습니다 통해 검색 .. 예를 들어DB를의 단어 - 어휘 사전 (의미 론적 유사성)

, beer "다른 방향"(예 : "맥주"에 대한 아이디어의 "보통"버전, 후자의 두 가지는 "극한"버전)에 각각 "다른"soda, lemonade, wine, champagne과 같은 "자매 단어"가 표시됩니다.

WordNet에는 API가 있지만 사전에있는 단어와 구는 대부분 비공식적으로 관련되어 있습니다.

(다른 예. "조폭은"[nun, orphan, rebel]에 관한 것이다 {criminal, mafia boss, murderer}, 왼쪽에서 오른쪽, 그리고 []에서는 사람이 "포지티브 사지 '로, 내의 것들 {}"음의 말단 ")

이다로부터 선단이 변동 곳 사용에서 :

  1. 사용자가 검색 입력 (워드)
  2. 말씀은 자매 단어와 일치를 입력합니다.
  3. 사용자는 위의 예와 같이 최소한 두 방향으로 말단을 변경하여 "단어를 좁히는"기회가 있습니다.

이러한 검색을 구현하는 가장 좋은 방법은 위의 2 단계와 3 단계입니다.

내가 익숙한 것이므로 PHP/MySQL 사용을 고려하고 있지만 더 나은 대안은 무엇입니까? 다시 말하지만 이것은 큰 사전이 아닙니다. 그것은 단지 일반적인 단어의 선택입니다.


여기이 대답에 내 시도 - 그것은 아주, 아주 기본입니다 ... 개선 제안 환영 :

MySQL의 테이블 단어 :

 

id, (primary key, autoincrement) 
word (varchar 75), 
relatedword (varchar 75) 
relationscore (int 11) 
direction (tinyint, -1 or 1) 
 

달러 (A $) 단어 쿼리 및 $ 방향을 감안할 때 : 당신이 단어 n을 생각하는 이유

"SELECT relatedword FROM words WHERE word='$word' AND direction=$direction ORDER BY relationscore DESC"

답변

0

나는 분명 해요 et 부적절합니다. 나는 당신이 "긍정적/부정적 말단"과 "자매 단어"라고 부르는 것은 언어 학자들이 상위어 (더 일반적인 동의어)와 하위 단어 (보다 구체적인 동의어)라고 부르는 것이라고 생각합니다. Wordnet은 합리적으로 좋은 모델을 포함합니다.

Wordnet을 사용하려면 상위 단어 ('맥주') 관계를 사용하여 몇 단계로 올라가는 "자매"단어를 찾으십시오. 따라서 "맥주"로 시작하면 3 단계로 올라가면 "음료"가 나옵니다. 그런 다음, hyponyms ('beverage') 관계를 사용하여 여러 단계로 내려가 맥주와 동일한 양의 특이성을 가진 음료 종류를 얻습니다.

다음은 Nodebox Linguistics을 통해 액세스되는 Wordnet 인터페이스의 예입니다. 필자는 PHP를 사용하지는 않았지만 PHP에 상응하는 Wordnet 인터페이스가 있다고 생각합니다. 예를 들어, 반군은 반드시 "나쁜"아니다, 그러나 살인자/범죄에 관해서 명확하게 부정적인 무언가의 의미가있다 -

>>> import en 
>>> noun = 'beer' 
>>> generalization_depth = 3 
>>> sister_words = en.noun.hyponym(en.noun.hypernyms(noun)[generalization_depth][0]) 
>>> for word in reduce(lambda a,b: a+b, sister_words, []): 
...  print word 
... 
milk 
wish-wash 
potion 
alcohol 
alcoholic beverage 
intoxicant 
inebriant 
hydromel 
oenomel 
near beer 
ginger beer 
mixer 
cooler 
refresher 
smoothie 
fizz 
cider 
cyder 
cocoa 
chocolate 
hot chocolate 
drinking chocolate 
fruit juice 
fruit crush 
fruit drink 
ade 
mate 
soft drink 
coffee 
java 
tea 
tea-like drink 
drinking water 
+0

글쎄, 난 그것도 분류에 따라 같아요. 그것은 구체적이지는 않지만 본질적으로 "좋은 사람", "나쁜 사람"분류의 실제 정도입니다.우유/맥주의 경우 ... 맥주는 다른 맥주보다 더/부정적인 것으로 간주됩니다. – ina

+0

@ina, 무슨 뜻인지 알 겠어. 그것이 매우 주관적인 기준이기 때문에, 나는 당신이 단어의 "좋은/나쁜"분류를 가진 기존의 데이터베이스를 찾을 것이라고 생각지 않습니다. – Cerin

관련 문제