2016-12-04 22 views
1

this spinnerを使用して文字列を書き直そうとしています。TypeError: 'instancemethod'オブジェクトは反復できません(Content Spinner)

私はreadmeのと同じ正確なコードを実行しよう:

bot.py:

108: from spinner import spinner 
109: s = spinner() 
110: spintax = s.getSpintax('Everything in moderation, including moderation.') 
111: spun = s.spin(spintax) 
112: print spintax, spun 

私がそうするとき、それが返されます。

Traceback (most recent call last): 
    File "C:\Python27\Scripts\Reddit\bot.py", line 110, in <module> 
    spintax = s.getSpintax('Everything in moderation, including moderation.') 
    File "C:\Python27\Scripts\Reddit\spinner.py", line 56, in getSpintax 
    n, syn = self.getSynonyms(stem) 
    File "C:\Python27\Scripts\Reddit\spinner.py", line 36, in getSynonyms 
    for lemma in syn.lemmas: 
TypeError: 'instancemethod' object is not iterable 

関連をそのエラーメッセージのコードは次のとおりです。

spinner.py:

32: def getSynonyms(self, word): 
    33: # include the original word 
    34:  synonyms = [word] 
    35:  for syn in wordnet.synsets(word): 
    36:   for lemma in syn.lemmas: 
    37:    if lemma.name != word: 
    38:    # since wordnet lemma.name will include _ for spaces, we'll replace these with spaces 
    39:     w, n = re.subn("_", " ", lemma.name) 
    40:     synonyms.append(w) 
    41:  s = list(set(synonyms)) 
    42:  return len(s), s 
    43: 
    44: # transform text into spintax with the folowing steps 
    45: # 1. split the text to sentences 
    46: # 2. loop through the sentences and tokenize it 
    47: # 3. loop thorugh each token, find its stem and assemble all the synonyms of it into the spintax 
    48: def getSpintax(self, text): 
    49:  sentences = self.splitToSentences(text) 
    50:  stemmer = PorterStemmer() 
    51:  spintax = "" 
    52:  for sentence in sentences: 
    53:   tokens = regexp_tokenize(sentence, "[\w']+") 
    54:   for token in tokens: 
    55:    stem = stemmer.stem(token) 
    56:    n, syn = self.getSynonyms(stem) 
    57:    spintax += "{" 
    58:    spintax += token 
    59:    spintax += "|" 
    60:    for x in range(n): 
    61:     spintax += syn[x] 
    62:     if x < n-1: 
    63:      spintax += "|" 
    64:     else: 
    65:      spintax += "} " 
    66:  return spintax 

は、私は、Python 3の両方で試してみたと私はちょうど、インターネットからそれをつかんだので、2

私はspinner.pyに慣れていないよ、私は自由のための私のためのテキストを回転します何かが必要。また、次の行には何をするのか:

synonyms = [word] 

誰もが、私は何か他のものを試して喜んでだろう使用することができますいくつかの他のフリーテキストスピナーをお勧めすることができますが、私は束を試み、この1つは最も簡単だった場合、私はちょうどテキストの行、またはファイルを渡し、同義語/ etcに基づいて書き直したいと思う。これは、私がそれを行うための最良の選択肢のように思えますが、コードで何がうまくいかないのか分かりません。

+2

試してみてください:あなたはにgetSynonyms機能を変更する必要が 'syn.lemmasで補題()のために' - これは働いていた括弧 –

答えて

1

@ hai-vuが正しい。

#  get all synonyms of a word from the wordnet database 
    def getSynonyms(self, word): 
#   include the original word 
     synonyms = [word] 
     for syn in wordnet.synsets(word): 
      for lemma in syn.lemmas(): 
       if lemma.name() != word: 
#      since wordnet lemma.name will include _ for spaces, we'll replace these with spaces 
        w, n = re.subn("_", " ", lemma.name()) 
        synonyms.append(w) 
     s = list(set(synonyms)) 
     return len(s), s 
+0

に注意してください、私は助けに感謝します。 「同義語= [単語]」行が何をしているのか教えていただけますか?私はそれをどのように見ているかわからない、それはリストや何かとして "単語"変数をキャストするのが好きですか? – Lightja

+0

シノニムをリストとして作成します。そのリストに単語の内容を入れます。 –

関連する問題