2014-12-09 3 views
1

나는 대학에서 대학원 경쟁을 위해 현재 Kaggle's Billion Word Imputation 경쟁에 참여 중이다. 우리는 간단한 3-gram 모델로 작업하고 있습니다. 우리는 기억을 저장하기 위해 1,2,3 번 발생했던 유니 그램과 우리 훈련 세트에서 한 번 발생했던 바이 그램을 무시할 수 밖에 없었습니다. 그래서 우리는 주파수가 1,2,3 인 단어를 잊어 버립니다. 그 낱말을 포함하는 bigrams 및 주파수 1을 가진 bigrams; 이전 삭제 된 ngram 중 하나를 포함하는 3 그램.Ngram 모델 : Good-Turing Smoothing

지금 우리는 누락 된 단어가 어디로 가야하는지, 그리고 어떤 단어인지 찾아내는 지점으로 왔습니다. 여기서 문제는 각 ngram의 확률을 어떻게 계산/추정 할 수 있는가? 그래서 보이지 않는 단어 나 구문을 발견했을 때 확률은 0이 아니므로? 우리가 전체 훈련 세트를 처리 할 수 ​​없다는 것을 알기 전에, 우리는 Good-Turing Smoothing을 사용하는 것을 생각했습니다. 이것은 꽤 잘되고 구현하기 쉽습니다.

Good-Turing Smoothing의 경우 각 주파수의 빈도가 필요하며 이제는 빈도가 1 인 bigram (w1, w2)이 없으므로 어떻게해야합니까? 각 w1에 해당 번호를 저장하는 것으로 생각 했으므로 계산에 사용할 수 있습니다 (*). 이 더 나은 여부 아무것도 할 것입니다 경우 정말 상관없이 우리가 우리의 모델에서 한 컷의 한편

, 모르겠어 ..., 우리가 다음이 있다면 :

주파수에 c - -> 주파수 노스 캐롤라이나 주파수

1 ---> 456

2 ---> 123

3 ---> 50

5 ---> 23

,745,

빈도 c = 3 인 단어에 대해 새 c, c *를 평가하려면 N4와 N2가 모두 필요하지만 N4는 0입니다.

(*) 따라서 c = 1 인 단어 w2가 저장되지는 ​​않지만 보이지 않는 단어의 확률을 계산하는 데 가장 중요한 N1을 갖게됩니다.

이것을 해결할 수있는 간단한 방법이 있습니까 (특별히 마지막 부분)?

답변

0

저는 전문가는 아니지만 비슷한 문제가 있습니다. 이것은 Good-Turing 스무딩과 관련된 문제이며, 특히 Jurafsky의 교과서에 언급되어 있습니다.

방금 ​​위 또는 아래에서 가장 가까운 수를 사용했습니다. 이것은보기 흉하지 않은 결과를 만들어내는 것처럼 보였다.

관련 문제