단어 (문자열) 목록을 취하고 각각의 특정 단어가 몇 번이나 나오는지 계산하고 단어가 나타나는 횟수를 사전으로 반환하는 함수를 작성하려고합니다. 목록을 목록의 총 단어 수 (용어 빈도 벡터)로 나눈 값입니다.용어 빈도 값의 사전 만들기
def makeTermFrequencyVector(wordList):
'''
makeTermFrequencyVector Takes a list of words as parameter and returns a dictionary representing the term frequency
vector of the word list, where words are keys and values are the frequency of occurrence of
each word in the document.
'''
tfDict = {}
for word in wordList:
for i in range(len(wordList)):
state = 0
if wordList[i] == word:
state += 1
tfv = state/(len(wordList))
tfDict[word] = tfv
return tfDict
내가 입력 된 경우
가makeTermFrequencyVector(['cat', 'dog']):
출력이어야 각 단어 2.
그러나 총 길이의리스트에 한번 표시
{'cat': 0.5, 'dog': 0.5}
때문에, 이것을 코드는 올바른 tf 값을 가진 입력 목록의 마지막 단어 만 포함한 사전을 반환하고 다른 모든 단어는 ' 값이 0입니다. 따라서 위의 목록을 현재 코드에 입력하려고하면 다음을 반환합니다.
{'dog': 0.5, 'cat': 0.0}
올바르지 않습니다.
이 문제를 해결하여 마지막 단어뿐만 아니라 목록의 각 단어에 대한 값을 반복 할 수 있습니까? 가능한 고정 코드를 현재 코드에 가깝게 유지하고 싶습니다.
코드의 첫 번째 줄 뒤에 모든 코드가 들여 쓰기되어야합니다 (함수 안에 있기 때문에). –