개발 질문드립니다(단어 의미 분류)

object0814의 이미지

안녕하세요.

현재 개인 프로젝트를 진행중인데, 어떻게 구현해야 할지 감이 안잡혀서 질문드립니다.

단어 목록이 1000개가 있는데 그 단어 를 ~10개 정도의 집합으로 압축하여 분류하고 싶습니다.

예를 들면

[dog, cat, tree, human, piano, sun, fish, computer, map, pen, lemon, apple, mountain...]

이런 목록이 있을때,

- animals = [dog, cat, fish, ...]

- natural = [sun, mountain, tree, ...]

- fruits = [lemon, apple, ...]

- etc = [human, piano, computer, map, ...]

이런 방식으로 분류 하고 싶습니다. 언어는 영어인데

어떤 방식으로 해야 할까요?

감사합니다.

yukariko의 이미지

우선은 분류를 알수있는 추가적인 인자가 필요해 보이네요.

ensky0의 이미지

사람이 분류하는 기준을 정확히 알지 못하고, 그 기준에 따라 일관성 있게 분류하지 못한다면
자동으로 하는 것도 불가능 합니다.
자신이 어떠한 기준으로 저러한 label을 만들었고, 저 label에 속하도록 분류를 했는지
명확하게 얘기할 수 있어야 할겁니다.

그 다음 생각해 볼 문제는 위에 10개의 label이 다 나와있지 않아서 드리는 질문인데
10개의 label이 정해져 있나요?

그렇다면 classification이 될 것이고
학습 데이터가 있는지 없는지에 따라서
supervised, unsupervised 알고리즘 중에서 선택해야 할 것 같습니다.
분류하는 교사 학습 알고리즘은 단순한 naive bayes부터 maximum entropy나 SVM 같은거 사용할 수 있을꺼구요.

label이 명확히 정해져 있지 않고, 몇개로 나누어야 겠다 정도만 생각하고 있다면
clustering을 하고 나서 각 cluster에 label을 붙일수도 있겠네요.
요즘 많이 쓰는 LDA 같은거 사용할 수 있을꺼구요.
이 경우에 label을 붙이는 것은 또 다른 문제입니다. 사람이 할지 자동으로 할지도 생각해야 하고...

개인 프로젝트인데 이것저것 필요한게 많은 복잡한 방법들을 얘기한건 아닌지 모르겠습니다.
이보다 단순하게 생각한다면 휴리스틱에 의해서 간단하게 해도 될 것 같습니다.