2011-05-16 5 views
6

소스 데이터를 기반으로 임의의 단어를 생성하기 위해 Markov chains을 사용하는 많은 예제가 있지만, 종종 지나치게 기계적이고 추상적 인 것으로 보입니다. 나는 더 나은 것을 개발하려고 노력 중이다.보다 현실적인 임의 단어 생성기를 작성 하시겠습니까?

나는이 문제의 일부가 쌍의 전반적인 통계적 발생에 전적으로 의존하고 특정 방식으로 시작하고 끝나는 단어의 경향을 무시한다고 생각합니다. 예를 들어 상위 1000 개의 아기 이름을 소스 데이터로 사용하는 경우 문자 J는 전반적으로 비교적 드뭅니다. 그러나 부터까지 두 번째로 가장 많이 사용되는 문자입니다. 또는 라틴어 소스 데이터를 사용하는 경우 -um 및 -us와 같은 단어 끝은 끝 ()이지만 모든 쌍을 동일하게 간주하는 경우에는 일반적이지 않습니다.

그래서 기본적으로 소스 데이터에서 단어의 시작과 끝을 고려한 Markov chain 기반의 단어 생성기를 사용하려고합니다.

개념적으로는 저에게 의미가 있지만, 소프트웨어 관점에서이를 구현하는 방법을 알 수는 없습니다. 저는 소스 데이터 (예 : 1000 단어 목록)를 드롭 할 수있는 작은 PHP 도구를 조합하여 현실적인 시작, 중간 및 끝으로 다양한 임의의 단어를 생성합니다. (대부분의 마르코프 기반 단어 생성기와 반대로, 전체적으로 통계적으로 쌍을 이루는 것을 기반으로합니다.)

가능하면 원본 데이터에 의해 결정되는 단어 길이로 이것을 수행하고 싶습니다. 즉, 임의로 생성 된 단어의 길이 분석은 원본 데이터의 길이 분류와 대략 동일해야합니다.

어떤 아이디어라도 대단히 감사하겠습니다! 감사.

답변

3

"단어 사이의 간격"을 기호로 간주하면 일반적인 시작과 끝을 존중하지 않는 부분은 사실이 아닙니다. 일반적인 시작은 "단어 사이의 간격"다음에 높은 빈도를 갖게 될 것이고 일반적인 끝은 높을 것입니다 "단어 사이의 간격"앞에 오는 주파수. 올바른 단어 길이는 다소 자연스럽게 정착합니다. "단어 사이의 간격"기호로 전환하기 전에 출력하는 평균 글자 수는 훈련 데이터에서 단어 당 평균 글자 수와 같아야합니다. 내 마음의 뒤쪽에서 그 배포가 꺼져있을 것이라고 말하고있다.

+0

감사합니다. Hobbs! 그것은 실제로 제가 마침내 온 해결책입니다. 나는 한 단어의 시작과 끝이 그 자체로 사물이 될 수 있다는 것을 깨달았습니다. 그래서 나는 그들을 대표하는 인물을 지명했습니다. 그 이후에 상황이 좋았습니다. :-) –

관련 문제