1

マッパー関数の一部として json ファイルを読み込もうとしていますが、ファイルは存在しますが、「ディレクトリにそのようなファイルはありません」というメッセージが返されます。

私はすでにファイルを開いて、その行を解析しています。しかし、その値の一部を 2 番目の JSON ファイルと比較したいと考えています。

from mrjob.job import MRJob
import json
import nltk
import re    

WORD_RE = re.compile(r"\b[\w']+\b")
sentimentfile = open('sentiment_word_list_stemmed.json') 

def mapper(self, _, line):
    stemmer = nltk.PorterStemmer()
    stems = json.loads(sentimentfile)

    line = line.strip()
    # each line is a json line
    data = json.loads(line)
    form = data.get('type', None)

    if form == 'review':
      bs_id = data.get('business_id', None)
      text = data['text']
      stars = data['stars']

      words = WORD_RE.findall(text)
      for word in words:
        w = stemmer.stem(word)
        senti = stems.get[w]

        if senti:
          yield (bs_id, (senti, 1))
4

2 に答える 2

0

json.loads()開いているファイルを渡しながら、関数を使用しています。代わりに使用してくださいjson.load()(注、 no s)。

stems = json.load(sentimentfile)

関数を呼び出すたびにファイルを再度開く必要があります。ファイル名をグローバルに保存することをお勧めします。mapper()

sentimentfile = 'sentiment_word_list_stemmed.json'

def mapper(self, _, line):
    stemmer = nltk.PorterStemmer()
    stems = json.load(open(sentimentfile))

最後になりましたが、ファイル名への絶対パスを使用する必要があり、現在の作業ディレクトリが正しいことに依存しないでください。

于 2013-04-09T13:01:29.030 に答える