이 튜토리얼은 Python을 사용하여 Zipf의 법칙의 통계 개념을 처리하는 방법을 보여주고 법을 처리 할 때 Python의 읽기 및 대형 텍스트 파일을 정렬하는 효율성을 보여줍니다.
당신은 zipf 분포
라는 용어가 무엇을 의미하는지 궁금 할 것입니다. 이 용어를 이해하려면 먼저 Zipf Law 를 정의해야합니다. 걱정하지 마세요. 지침을 단순화하려고 노력할 것입니다.
Zipf의 법칙
Zipf의 법칙은 단순히 : 큰 자연 언어 코퍼스에서 가장 자주 발생하는 단어는 두 번째 빈번한 단어보다 두 배나 자주 나타납니다.
예를 살펴 보겠습니다. 미국 영어로 브라운 코퍼스를 보면 가장 자주 나타나는 단어가 "the"(69,971 회 나타납니다)라는 것을 알 수 있습니다. 두 번째는 종종 36,411 배의 단어 "라는 단어가 나타났습니다.
""브라운 코퍼스 어휘의 약 7%를 차지합니다 (백만 단어 이상 중 69,971 명). "OF"는 코퍼스의 약 3.6% ( "The"의 약 절반)를 차지합니다. 따라서 우리는 ZIPF의 법칙 이이 경우에 적용되는 것을 알 수 있습니다.
따라서 Zipf의 법칙은 소수의 항목이 일반적으로 우리가 관찰하는 대부분의 활동을 차지한다고 말하려고합니다. 예를 들어, 몇 가지 질병 (암, 심혈관 질환)은 대부분의 사망을 설명합니다. 이것은 또한 문학 작품에서 단어의 대부분의 빈도를 차지하는 단어와 우리 삶의 다른 많은 예에 적용됩니다.
데이터 준비
계속하기 전에이 자습서에서 사용할 실험 데이터를 소개하겠습니다. 우리의 데이터는 Project Gutenberg 웹 사이트에서 제공되는 드라큘라 텍스트 버전에서 제공됩니다.
프로그램 구성
이전 섹션에서 데이터를 다운로드 한 후 dracula.txt 에서 데이터의 ZIPF 분포를 찾는 Python 스크립트를 구축 해 드리겠습니다.
첫 번째 단계는 함수를 사용하여 파일을 읽는 것입니다.
우리는 패턴 (즉, 단어)을 찾고 있기 때문에 정기적 인 표현이 편리합니다. 우리는 Python 's 를 사용하여 전통적인 의미에서 단어가 아닌 단어를 제거 할 것입니다. 예를 들어 Robotics_89, 40_pie_40 및 Bigmango와 일치하지 않습니다. "Bigmango"는 여러 대문자로 시작하기 때문에 일치하지 않습니다.
이 정규식은 기본적으로 문자 (캡 또는 소문자)로 시작하는 모든 단어와 최소 2 자, 9 자 이하의 문자를 찾도록 지시합니다. 다시 말해, 출력에 포함 된 단어 크기는 3 ~ 10 자입니다.
파이썬에서 이것은 다음과 같이 표현 될 수 있습니다
이제, 우리는 루프를 실행하여 각 단어 발생의 주파수를 계산할 수 있습니다.
여기서, 단어 목록에 단어가 없으면
함수를 사용하여 값을 통과하여 루프 오류에 대한 A를 던지는 대신 다른 단어의 인덱스 위치를 추적 할 수 있습니다. 가장 빈번한 단어의 빈도는 비율을 계산하기 위해 다른 단어의 빈도로 나뉩니다. 이를 통해 우리는 Zipf의 법칙을 얼마나 잘 준수하는지 알 수 있습니다.
모든 내용을 통합
프로그램의 다른 빌딩 블록을 이해 한 후, 그들이 어떻게 구성되는지 보자.
여기에 프로그램과 그 빈도가 반환 한 첫 10 개의 단어를 표시합니다.
이 ZIPF 분포에서 우리는 ZIPF의 법칙, 즉 일부 단어 (고주파 단어)가 "the", "and", "that", "was"및 "for"와 같은 대부분의 단어를 나타냅니다.
결론
이 튜토리얼에서는 Python이 Zipf의 법칙과 같은 통계 개념의 처리를 단순화하는 방법을 알 수 있습니다. 특히 큰 텍스트 파일을 다룰 때 Python은 매우 편리하며 수동으로 ZIPF 분포를 찾으면 많은 시간과 노력이 필요합니다. 우리가 볼 수 있듯이 크기 28MB의 파일의 ZIPF 분포를 빠르게로드, 구문 분석 및 찾을 수 있습니다. 그리고 Python의 사전으로 인해 출력을 정렬하는 것도 간단합니다. words = re.findall(r'(\b[A-Za-z][a-z]{2,9}\b)', file_to_string)
로그인 후 복사
이 기사는 업데이트되었으며 Monty Shokeen의 기여를 포함합니다. Monty는 튜토리얼을 작성하고 새로운 JavaScript 라이브러리를 배우는 것을 좋아하는 풀 스택 개발자입니다.
위 내용은 Python을 사용하여 텍스트 파일의 ZIPF 배포를 찾는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!