도움을 주셔서 감사합니다. 나는 극도로 길을 잃었다. 나는 코퍼스를 가져 오려고 시도하고 나서 전체 trigram을 포함하는 첫 번째 열 옆의 빈 열 분포와 상대 빈도가 두 열의 csv 파일로 트라이 그램을 인쇄하도록합니다. 하지만 RegexTokenizer를 잘 이해하지 못합니다. 아래의 코드는 90 %의 길을 얻지 만 RegexTokenizer는 문자를 찾습니다. 따라서 "tr"에서 "do t go"와 같은 연결을 사용하여 구를 나눕니다. "don t go"텍스트를 토큰 화하고 CSV에 쓰려면 NLTK RegexTokenizer를 사용하십시오.
나는 그것을 멈추기 위해 필요합니다. . RegexTokenizer가 없으면 trigrams는 다음과 같이 보입니다. (u'middle ', u'class', u'americans ') RegexTokenizer를 사용하여 u와'사이의 구만 찾을 수 있다고 상상할 수 있습니다. 하기 위해서.
import nltk
import re
from nltk.corpus.reader.plaintext import PlaintextCorpusReader
from nltk import FreqDist
import math
from decimal import *
from nltk.tokenize import RegexpTokenizer, WhitespaceTokenizer
import csv
#this imports the text files in the folder into corpus called speeches
corpus_root = '/Users/root...'
speeches = PlaintextCorpusReader(corpus_root, '.*\.txt')
print "Finished importing corpus"
tokenizer = RegexpTokenizer(r'\w+')
raw = speeches.raw().lower()
tokens = tokenizer.tokenize(raw)
tgs = nltk.trigrams(tokens)
fdist = nltk.FreqDist(tgs)
minscore = 200
numwords = len(raw)
c = csv.writer(open("TPNngrams.csv", "wb"))
for k,v in fdist.items():
if v > minscore:
rf = Decimal(v)/Decimal(numwords)
firstword, secondword, thirdword = k
trigram = firstword + " " + secondword + " " + thirdword
results = trigram,v,rf
c.writerow(results)
print firstword, secondword, thirdword, v, rf
그리고 나는 또한 무작위로이 오류가 점점 계속 :
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa9' in position 0: ordinal not in range(128)