2017-03-10 2 views
1

내가 이렇게 같은 색 연결을 얻으려고 :word2vec 단어를 연상 시키는가?

apple -> red 

banana -> yellow 

grass -> green 

sky -> blue 

를 구글 뉴스 - 벡터 - negative300.bin 벡터를 사용하여, 내가 먼저 색상은 기본 색상 인

wv.similarity('apple',color) 

, 예를 '시도 적색 ','황색 ','청색 '등이 포함됩니다.

과일과 함께'오렌지색 '은 항상 색상과 과일을 섞어서 가장 높은 색상 조합입니다. 나는 오렌지를 제거하면 결과는 여전히 이상한 :

apple: 

[('violet', 0.24978276994901127), ('green', 0.20656763297902447), ('red', 0.19834849929308024), ('yellow', 0.18963902211016806), ('cyan', 0.17945308073294569), ('blue', 0.13687176308102386)] 

cherry: 
[('violet', 0.27348741504236473), ('red', 0.25540695681746473), ('yellow', 0.24285150471329794), ('blue', 0.20400566489159569), ('green', 0.18741563150077917), ('cyan', 0.12736182067644364)] 

banana: 
[('yellow', 0.27708333668133234), ('green', 0.25977272141145935), ('red', 0.24736077659820707), ('violet', 0.23909913025940599), ('cyan', 0.16519069493338848), ('blue', 0.15660144725154587)] 

그래서 분명히 '바이올렛' '사과'와 다른 차원에 따라 '체리'와 정렬 (아마 그들은 식물이야?)

.

나는 그것을 비유로 공식화하려고 노력했다. 이것은 일부 개체 근무하지만 잘 일반화하지 않습니다 나는 또한 페이스 북의 fasttext에 묻어을 시도했지만 결과는 나빴다

wv.most_similar(restrict_vocab=100000, positive=['apple','yellow'], negative=['banana']) 
[(u'red', 0.5296207666397095), (u'orange', 0.501822829246521), (u'bright_yellow', 0.49562686681747437), (u'purple', 0.4909234642982483), (u'blue', 0.465557336807251), (u'pink', 0.43768370151519775), (u'colored', 0.4296746551990509), (u'brown', 0.4290006756782532), (u'bright_orange', 0.4261433482170105), (u'yellows', 0.4199957549571991)] 

wv.most_similar(restrict_vocab=100000, positive=['grass','yellow'], negative=['banana']) 
[(u'bright_yellow', 0.4722655713558197), (u'blue', 0.45448029041290283), (u'red', 0.43442922830581665), (u'lawns', 0.4275570809841156), (u'maroon', 0.4197036325931549), (u'bright_orange', 0.41167205572128296), (u'brown', 0.4110153317451477), (u'purple', 0.4074830412864685), (u'grassy', 0.4017237722873688), (u'striped', 0.40009182691574097)] 

. 어떻게하면이 문제에 접근하여 "공통 색상"에 대한 벡터를 격리해야합니까?

답변

1

이것은 재미있는 일이지만 단어 벡터가 이러한 관계를 성공적으로 인코딩하는지는 공개적인 질문으로 보입니다. 성공의 수준은 코퍼스 및 매개 변수를 비롯한 많은 특정 교육 선택에 달려 있습니다. .

특히, 게시 된 뉴스 기사에서 훈련 된 GoogleNews 벡터 세트는 과일 - 색상을 다른 선택과 연결하는 데 그리 강하지 않을 수 있습니다. (예를 들어 아동 도서의 텍스트 나 교육 프로그램의 성적표는이 목적을 위해 더 강력한 벡터 배열을 유도한다고 생각합니다.)

violet도 꽃이기 때문에 다른 사람과의 친밀감을 부분적으로 설명합니다. 과일. 그리고 과일과 색상 모두가 관련 될 때 이슈를 생성하므로 '오렌지'의 중요성을 주목하십시오. 일반 Word2Vec 또는 GoogleNews 벡터에서 여러 단어 감각 사이에는 모호성이 없습니다. 대체 단어 감각을 구별하기 위해 단어 벡터를 사용하거나 작성한 연구가 일부있었습니다. ('파랑', '녹색', '노랑', '체리', '잔디'와 같은 단어조차도 벡터 위치 지정에 영향을 줄 수있는 다른 의미가 있습니다.) 유추/방향 접근 방식에있을 수 있다고 생각됩니다 순수 유사성보다 운이 더 많습니다. (즉, "이 컬러 워드는이 오브젝트 워드에 절대적으로 가장 가까운 것"이 아닌 "이 다른 오브젝트 워드에서 얻은 방향에 어떤 컬러 워드가 있습니까?") 묻습니다.

오브젝트 워드 -> 컬러 워드 예를 들어 더 큰 도메인에서 쌍을 만들거나 다른 벡터 정의를 사용하여 다른 정의/합성물이 예상 한 답과 더 잘 일치하는지 확인하십시오.

예를 들면. 어쩌면 당신의 "learn-the-direction"예제는 하늘색 - 푸른 색, 석탄 - 검정색 등 과일이 아닌 과일을 포함해야합니다.

그리고 한때 유추 해 보았을 때 같은 관계의 좋은 유추가 단지 하나가 아닌 함께 사용되었습니다. (즉, 독일 : ? "을 조사하기 전에"영국 : 런던 ","러시아 : 모스크바 ","프랑스 : 파리 "의 모든 방향을 구성하십시오.나는 gensim에 most_similar()positive/negative 목록을 더 벡터를 추가하면 같은 효과가 있는지 확실하지 않습니다 또는 당신은/차이점/평균을 자신을 규준해야합니다.)

비유 결과의 해석 및 개선에 흥미로운 논문이다 Levy & Goldberg의 "Linguistic Regularities in Sparse and Explicit Word Representations".

단어 (또는 개념/엔티티) 벡터를 질문하거나 답변하는 데 도움이되도록 훈련하거나 왜곡하려고하는 다른 연구가 있지만 관련성이있을 수 있지만 검색 용어로는 알지 못합니다. 사용 가능한 라이브러리에서 특히 적절하거나 즉시 사용할 수있는 기술입니다.

+1

감사합니다. 저는 벡터 수학 접근법을 시도해 보았습니다. 그리고 그것은 사물을 조금 개선하는 것처럼 보입니다. 방금이 프로젝트에 대해 알게되었습니다 : https://explosion.ai/blog/sense2vec-with-spacy 이 작업에는 완벽해야합니다. 나는 주황색과 보라색이 ADJ로 사용될 때 다른 의미를 가지지 않는다고 생각합니다. 그래서 POS 라인에 따른 감각적 인 명확성은 훨씬 더 나은 결과를 가져올 것입니다. – Jack000

관련 문제