나는 대학에서 대학원 경쟁을 위해 현재 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을 갖게됩니다.
이것을 해결할 수있는 간단한 방법이 있습니까 (특별히 마지막 부분)?