2008-09-23 5 views
19

이것은 일반적으로 태그 지정 항목에 적용되는 실제 문제입니다 (예, StackOverflow에도 적용되며, 아니요, StackOverflow에 대한 질문은 아닙니다).태그 계층 구조 및 처리

전체 태그 지정 문제는 비슷한 항목을 클러스터링하는 데 도움이됩니다 (항목이 농담, 블로그 게시물, 질문 등). 그러나 거기에는 보통 태그의 계층 구조가 있지만 일부 태그는 다른 태그를 의미합니다. 익숙한 예제를 사용하기 위해 "C#"so 태그는 ".net"을 의미합니다. 또 다른 예를 들면, 농담 데이터베이스에서 "금발"태그는 농담의 나라 출신에 따라 "아일랜드"또는 "벨지"또는 "캐나다"등과 마찬가지로 "조잡한"태그를 의미합니다.

프로젝트에서 어떻게 처리 했습니까? 두 개의 개별 사례 (실제로는 동일한 메커니즘이지만 두 개의 다른 환경에서 구현)에서 사용한 두 가지 다른 방법을 설명하는 답변을 제공 하겠지만 유사한 메커니즘뿐만 아니라 계층 구조 문제에 대한 귀하의 의견에도 관심이 있습니다. .

답변

1

구현 한 메커니즘은 주어진 태그를 사용하지 않고 간접적 인 조회 테이블 (엄밀히 말하면 DBMS 용어가 아님)을 사용하여 태그를 많은 암시 태그에 연결합니다 (분명히 태그는이).

파이썬 프로젝트에서 조회 테이블은 값 집합 태그 (여기서 태그는 일반 문자열)를 사용하여 태그에 키를 입력하는 사전입니다. trlValue가 중력을 부여하기 위해 사용되는 (0의 값을, 1]의 공간이었다

[Tags] 
tagID integer primary key 
tagName text 

[TagRelations] 
tagID integer # first part of two-field key 
tagID_parent integer # second part of key 
trlValue float 

:

(그것이 엔진 RDBMS 무관심) 데이터베이스 프로젝트에서

다음 표 있었다 각각의 링크 된 태그에 대해 self-to-self 태그 관계는 항상 trlValue에 1.0을가집니다. 나머지는 알고리즘에 따라 계산됩니다 (정확히 얼마나 중요하지는 않습니다). 내가 준 예제 데이터베이스를 생각해보십시오. [ '금발', ' 0.5] 기록은 [ 'pondian', 'derisive', 0.5]와 상호 관련이 있으며 따라서 다른 농담을 제안한다.

6

이것은 힘든 퀘스트이다 엔. 두 극단은 온톨로지 (모든 것이 계층 적 임)와 포크 소노 미 (태그는 계층 구조가 없음)입니다. 나는 answered this on WikiAnswers을 가지고 있는데 Clay Shirky의 "Ontology is Overrated"기사를 참조하면 계층 구조를 설정하지 않아야한다고 주장합니다.

+0

클레이 셔키의 기사는 매우 흥미로웠다. 분명히, 근접 인자 (데이터베이스 예제에서)는 관련 용어를 부드럽게하기 위해 도입되었습니다 ('게이'와 '퀴어'의 기사 예제에서). – tzot

+2

어떤 이유로 WikiAnswers 페이지에서 Clay Shirky의 기사 링크를 찾을 수 없습니다. 여기 있습니다 : http://www.shirky.com/writings/ontology_overrated.html. 나는 그것을 너무 좋아했다. –

4

사실 나는 그것이 계층 적 시스템이 아니라 태그 의미 사이의 느껴진 거리를 가진 의미 론적 그물이라고 말할 수 있습니다. 수학은 실험 물리학에 더 가깝고 원예학에 더 가깝다는 것을 의미합니다.

그런 그물망을 만들 수있는 가능성 : 태그 쌍을 만들어 사람들이 감지 거리를 판단하게하십시오 ([동의어, 비슷하게, ..., 반의어]와 같은 의미로 1-10과 같은 값을 사용하십시오) 검색 할 때 특정 거리 내의 모든 태그를 검색하십시오.

oposite ([a, b] close -> [b, a,] close) 방향에서 오는 측정 값은 동일한 거리 여야합니까? 또는 접근은 [a, b] 닫고 [b, c] 닫음 -> [a, b] 닫음을 의미합니까?

어쩌면 첫 번째 단어는 기본적으로 다른 의미 필드를 트리거 할 것입니까? "사회 복지사"에서 시작하면 "분석가"는 거의 없습니다. "프로그래머"에서 시작하면 "분석가"도 가깝습니다. 그러나이 중 어느 시점에서 시작해도 가까운 상대방을 ("sozial worker"는 결코 "프로그래머"에 가깝지 않습니다.) 가까운 사람으로 간주하지 않을 것입니다.

따라서 쌍을 판단하고 양방향으로 (무작위 순서로) 판단해야합니다.유사한 태그의 선택에 대한

[TagRelations] 
tagId integer 
closeTagId integer 
proximity integer 

예 :

select closeTagId from TagRelations where tagId = :tagID and proximity < 3 
+0

근접 거리는 편도입니다. 양방향이어야한다면 다른 근접성을 가진 다른 레코드가 삽입됩니다. – tzot

+0

@malach : UX 문제로서, 계층 구조 사용과 관련하여, (i) 소프트웨어는 수학에 기초하여 설명한 의미 론적 접근 방식을 사용해야하지만, (ii) 자신의 컴퓨터에서 "원예"를하고 싶은 사용자 개인 태그 모음은 * 일부 사용자가 평이한 목록보다 편하다고 느낄 수 있기 때문에 태그를 계층 구조로 정렬하지 * 않도록 * 허용되어야합니다. 태그의 "개인화"가 문제가되지 않는 소프트웨어 시스템에서는 도메인 전문가가 다르게 판결하지 않는 한 평이한 목록을 사용할 수 있습니다. – rwong