Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 문자열의 각 단어의 빈도 찾기

<시간/>

텍스트 분석의 일부로 다양한 알고리즘에서 처리하기 위해 단어 수를 세고 가중치를 할당해야 하는 경우가 많습니다. 따라서 이 기사에서는 주어진 문장에서 각 단어의 빈도를 찾는 방법을 살펴보겠습니다. 아래와 같이 3가지 방법으로 할 수 있습니다.

카운터 사용

컬렉션 모듈의 Counter()를 사용하여 단어의 빈도를 얻을 수 있습니다. 여기서 먼저 split()을 적용하여 행에서 단어를 생성한 다음 most_common()을 적용합니다.

from collections import Counter
line_text = "Learn and practice and learn to practice"
freq = Counter(line_text.split()).most_common()
print(freq)

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

[('and', 2), ('practice', 2), ('Learn', 1), ('learn', 1), ('to', 1)]

FreqDist() 사용

자연어 도구 키트는 문자열의 단어 수와 고유한 단어 수를 표시하는 FreqDist 기능을 제공합니다. most_common()을 적용하면 각 단어의 빈도를 알 수 있습니다.

from nltk import FreqDist
text = "Learn and practice and learn to practice"
words = text.split()
fdist1 = FreqDist(words)
print(fdist1)
print(fdist1.most_common())

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

<FreqDist with 5 samples and 7 outcomes>
[('and', 2), ('practice', 2), ('Learn', 1), ('learn', 1), ('to', 1)]

사전 사용

이 접근 방식에서 우리는 라인의 단어를 사전에 저장합니다. 그런 다음 count()를 적용하여 각 단어의 빈도를 얻습니다. 그런 다음 단어 빈도 값으로 단어를 압축합니다. 최종 결과는 사전으로 표시됩니다.

text = "Learn and practice and learn to practice"
words = []
words = text.split()
wfreq=[words.count(w) for w in words]
print(dict(zip(words,wfreq)))

위의 코드를 실행하면 다음과 같은 결과가 나타납니다.

{'Learn': 1, 'and': 2, 'practice': 2, 'learn': 1, 'to': 1}