2017-05-10 1 views
0

nltktweeter_sample 코퍼로 훈련시키고 싶지만 카테고리별로 샘플을로드하려고하면 오류가 발생합니다.nltk corpus tweeter_sample 카테고리별로

먼저 그 같은 시도 :

from nltk.corpus import twitter_samples 

documents = [(list(twitter_samples.strings(fileid)), category) 
      for category in twitter_samples.categories() 
      for fileid in twitter_samples.fileids(category)] 

그러나 그것은 나에게이 오류 준 :

Traceback (most recent call last): 
    File "C:/Users/neptun/PycharmProjects/Thesis/First_sentimental.py", line 6, in <module> 
    for category in twitter_samples.categories() 
    File "C:\Users\neptun\AppData\Local\Programs\Python\Python36-32\lib\site-packages\nltk\corpus\util.py", line 119, in __getattr__ 
    return getattr(self, attr) 
AttributeError: 'TwitterCorpusReader' object has no attribute 'categories' 

내가 내 목록을하기 위해 그들에게 가능한 속성을 제공하는 방법을 모르겠어요 긍정적이고 부정적인 정서.

답변

2

당신이 twitter_samples.fileids()을 검사하는 경우, 별도의 양성 및 음성 파일이있는 것을 볼 수 있습니다 : 단지 해당 파일을 선택

>>> twitter_samples.fileids() 
['negative_tweets.json', 'positive_tweets.json', 'tweets.20150430-223406.json'] 

그래서 트윗이 긍정적 또는 부정적으로 분류하세요. nltk이 분류 된 corpora를 처리하는 일반적인 방법은 아니지만 거기에 있습니다.

documents = ([(t, "pos") for t in twitter_samples.strings("positive_tweets.json")] + 
      [(t, "neg") for t in twitter_samples.strings("negative_tweets.json")]) 

이렇게하면 10000 개의 짹짹의 데이터 세트를 얻을 수 있습니다. 세 번째 파일에는 분류되지 않은 다른 20000이 포함되어 있습니다.

+0

@alexis에 대한 답변을 많이 주셔서 감사합니다.하지만 제 질문에서 실수를 저 지르겠습니다. 마찬가지로 'nltk.FreqDist (documents)'를 사용할 수 있습니다. – Cavalier

0
categorized_tweets = ([(t, "pos") for t in twitter_samples.strings("positive_tweets.json")] + 
          [(t, "neg") for t in twitter_samples.strings("negative_tweets.json")]) 


smilies = [':-)', ':)', ';)', ':o)', ':]', ':3', ':c)', ':>', '=]', '8)', '=)', ':}', 
    ':^)', ':-D', ':D', '8-D', '8D', 'x-D', 'xD', 'X-D', 'XD', '=-D', '=D', 
    '=-3', '=3', ':-))', ":'-)", ":')", ':*', ':^*', '>:P', ':-P', ':P', 'X-P', 
    'x-p', 'xp', 'XP', ':-p', ':p', '=p', ':-b', ':b', '>:)', '>;)', '>:-)', 
    '<3', ':L', ':-/', '>:/', ':S', '>:[', ':@', ':-(', ':[', ':-||', '=L', ':<', 
    ':-[', ':-<', '=\\', '=/', '>:(', ':(', '>.<', ":'-(", ":'(", ':\\', ':-c', 
    ':c', ':{', '>:\\', ';(', '(', ')', 'via'] 

categorized_tweets_tokens = [] 
for tweet in categorized_tweets: 
    text = tweet[0] 
    for smiley in smilies: 
     text = re.sub(re.escape(smiley), '', text) 
    categorized_tweets_tokens.append((word_tokenize(text), tweet[1]))