2017-03-06 12 views
0

나는 임의로 생성 된 문장을 몇 초마다 분출하는 불화 봇을 만들고 있습니다. 임씨는 문장 구조를 좀더 좋게 만들기 위해 nltk 모듈을 사용하려고 노력하지만 오류가 발생하여 그것을 이해할 수 없다. (나는 파이썬에 익숙하며 내가 알아야 할 모든 것을 배우고있다. 함께)불화 동네를 만들었지 만 "실종 1 필수 위치 인수 : '자기'"

오류 :.

File "/root/PycharmProjects/untitled/Loop.py", line 29, in background_loop 
    messages = [(POSifiedText.make_sentence(tries=8, max_overlap_total=14, default_max_overlap_ratio=5.6,))] 
TypeError: make_sentence() missing 1 required positional argument: 'self' 

코드 :

당신은 텍스트 개체의 인스턴스에 make_sentence를 호출 할 필요가
import asyncio 
    import random 
    import discord.ext.commands 
    import markovify 
    import nltk 
    import re 

    class POSifiedText(markovify.Text): 
     def word_split(self, sentence): 
      words = re.split(self.word_split_pattern , sentence) 
      words = ["::".join(tag) for tag in nltk.pos_tag (words)] 
      return words 

     def word_join(self, words): 
      sentence = " ".join(word.split("::")[0] for word in words) 
      return sentence 

    with open("/root/sample.txt") as f: 
     text = f.read() 


    text_model = (markovify.Text(text, state_size=1)) 

    client = discord.Client() 
    async def background_loop(): 
     await client.wait_until_ready() 
     while not client.is_closed: 
      channel = client.get_channel('ChannelIdHere') 
      messages = [(POSifiedText.make_sentence(tries=8, max_overlap_total=14, default_max_overlap_ratio=5.6,))] 
      await client.send_message(channel, random.choice(messages)) 
      await asyncio.sleep(10) 

    client.loop.create_task(background_loop()) 
    client.run("TokenHere") 

답변

1

.

text_model = POSifiedText(text, state_size=1) 
+0

내가 사용하는'text_model = POSifiedText (markovify.Text (텍스트, state_size = 1))'내가 얻을'형식 오류를 :

text_model.make_sentence(...) 

나는 당신이 또한과 같이 사용자 정의 클래스를 사용하려는 생각 : 예상 문자열 또는 바이트와 같은 개체' – Museman

+0

수정 됨. 네가 수업을 물려받는 걸 잊어 버렸어. –