mirror of https://github.com/kurisufriend/dwass
commit
9eb9c304d6
@ -0,0 +1,42 @@ |
||||
#!/usr/bin/env python3 |
||||
# |
||||
# TODO: use map counters to avoid max() + .count |
||||
# |
||||
import sys |
||||
import random |
||||
#print(sys.argv, sys.argv.index("--debug")); sys.exit() |
||||
#no point in doing anything fancy for 2 flags |
||||
if not("--debug" in sys.argv): sys.tracebacklimit = 0 |
||||
else: sys.argv.remove("--debug") |
||||
|
||||
best = False |
||||
if "--best" in sys.argv: |
||||
best = True |
||||
sys.argv.remove("--best") |
||||
|
||||
assert (len(sys.argv) >= 4),"missing (an) argument(s)!\nthe syntax is 'dwas.py <source file> <prompt word> <response size>'\noptional flags:\n--debug: enable tracebacks\n--best: only uses the highest weighted words" |
||||
|
||||
try: |
||||
open(sys.argv[1], "r") |
||||
except FileNotFoundError: |
||||
pass |
||||
|
||||
f = open(sys.argv[1], "r") |
||||
words = f.read().replace("\n", "").replace(".", " ").replace(",", " ").replace("\"", "").replace(" ", " ").lower().split(" ") |
||||
|
||||
#generated "weighted" wordmap -- append every instance individually |
||||
#would be cleaner to make it actually weighted, an array of "word":count maps |
||||
wordmap = {} |
||||
for i in range(0, len(words) - 1): |
||||
if wordmap.get(words[i]) == None: |
||||
wordmap[words[i]] = [] |
||||
wordmap[words[i]].append(words[i + 1]) |
||||
|
||||
assert not(wordmap.get(sys.argv[2]) == None), "prompt word not in source file" |
||||
|
||||
print(sys.argv[2], end=" ") |
||||
last = sys.argv[2] |
||||
for i in range(0, int(sys.argv[3])): |
||||
last = max(set(wordmap[last]), key=wordmap[last].count) if best else random.choice(wordmap[last]) |
||||
print(last, end=" ") |
||||
print("") |
Loading…
Reference in new issue