Beispiel #1
0
class MalayalamMarkov:
    def __init__(self, input_db=None, output_db=None):
        malayalam_scanner = RegExpScanner(expr=MALAYALAM_EXPR)
        malayalam_formatter = Formatter(replace=MALAYALAM_REPLACE)
        if input_db:
            storage = SqliteStorage(db=input_db)
        elif output_db:
            storage = SqliteStorage(db=output_db)
        self.markov = MarkovText(scanner=malayalam_scanner,
                                 formatter=malayalam_formatter,
                                 storage=storage)

    def add_text(self, text):
        if text:
            self.markov.data(text)

    def predict(self, start, words, count):
        results = []
        for i in range(count):
            results.append(
                self.markov(max_length=words,
                            reply_to=start,
                            reply_mode=ReplyMode.END))
        return results

    def save(self):
        self.markov.save()

    def from_db(self, db_filename):
        storage = SqliteStorage(db=db_filename)
        self.markov = MarkovText.from_storage(storage)
Beispiel #2
0
async def markov(ctx, id):
    url = "https://www.fimfiction.net/story/download/" + id + "/txt"
    markovgenerate = MarkovText()
    print('Getting story with id {0}...'.format(id))
    markovgenerate.data(requests.get(url).content.decode(encoding="UTF-8"))
    print('Story received.')
    response = markovgenerate(max_length=5000)
    print('Markov chain response generated.')
    await ctx.send(response)
Beispiel #3
0
    async def markovgen(self, ctx):
        randomized_int = random.randint(1, 602)
        async with aiofiles.open(f"markov/markov ({randomized_int}).txt") as f:
            text = MarkovText()
            async for line in f:
                text.data(line, part=True)

        clean = await commands.clean_content(fix_channel_mentions=True
                                             ).convert(ctx, text())
        await ctx.send(clean)
def markovchain_example():
    markov = MarkovText()

    with open('word_generation/definitions.txt') as fp:
        for line in fp:
            markov.data(line, part=True)
    markov.data('', part=False)

    print(markov(max_length=16) + '\n')
    print(markov(max_length=16, reply_to='sentence start',
                 reply_mode=ReplyMode.END) + '\n')
Beispiel #5
0
def test_markov_text_generate(mocker, ss, data, args, res):
    fmt = mocker.patch('markovchain.text.MarkovText.format', wraps=list)
    markov = MarkovText(parser=Parser(state_sizes=[ss]),
                        scanner=Scanner(lambda x: x),
                        storage=JsonStorage(backward=True))
    markov.data(data)
    if isinstance(res, type):
        with pytest.raises(res):
            markov(*args)
    else:
        assert markov(*args) == res
        assert fmt.call_count == 1
Beispiel #6
0
#Not my code, this was just to test the Markov Chain Python in-built library. Source of the setup and code goes to: http://dead-beef.tk/markovchain/
from markovchain import JsonStorage
from markovchain.text import MarkovText, ReplyMode

markov = MarkovText()

#with open('data_extracted_6.txt') as fp:
with open('NoPrefaceEmilyDickinsonBooks12242.txt') as fp:
    markov.data(fp.read())

with open('NoPrefaceEmilyDickinsonBooks12242.txt') as fp:
    for line in fp:
        markov.data(line, part=True)
markov.data('', part=False)

print(markov())
print(markov(max_length=40, reply_to='sentence start', reply_mode=ReplyMode.END))

markov.save('markov.json')

markov = MarkovText.from_file('markov.json')


#NOTE: Fix the whole Sentence Start. Shinanigan in the output - why is it even printing that out?
Beispiel #7
0
def generate_markov(input_path):
    markov = MarkovText()
    with open(input_path) as fp:
        markov.data(fp.read())

    return markov
Beispiel #8
0
def test_markov_text_data(mocker):
    mock = mocker.patch('markovchain.Markov.data', return_value=1)
    markov = MarkovText()
    assert markov.data([1, 2], True) == 1
    mock.assert_called_once_with([1, 2], True)