Advertisement
Guest User

Untitled

a guest
Apr 10th, 2025
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  1. import random
  2. import task_handler
  3.  
  4.  
  5. def main():
  6. handler = task_handler.get_handler()
  7. config = handler.get_configuration()
  8.  
  9. text = config["input_text"].lower()
  10. order = config["order"]
  11. tasks = config["tasks"]
  12.  
  13. words = []
  14. word = ""
  15. for char in text:
  16. if char == " " or char == "\n":
  17. if word != "":
  18. words.append(word)
  19. word = ""
  20. else:
  21. word += char
  22. if word != "":
  23. words.append(word)
  24.  
  25. model = build_model(words, order)
  26. results = []
  27.  
  28. # First: print 10 lines starting with 'imagine' and 2 next words
  29. imagine_prefix = ("imagine",)
  30. if imagine_prefix in model:
  31. for _ in range(10):
  32. generated = generate_text(model, order, 3, imagine_prefix)
  33. results.append(" ".join(generated))
  34. else:
  35. for _ in range(10):
  36. results.append("imagine ??? ???")
  37.  
  38. # Then: process the rest of the tasks in order from config
  39. for i, task in enumerate(tasks):
  40. count = task["generate_n_words"]
  41. prefix_str = task.get("prefix")
  42.  
  43. prefix = None
  44. if prefix_str:
  45. prefix_words = []
  46. temp = ""
  47. for char in prefix_str.lower():
  48. if char == " ":
  49. if temp != "":
  50. prefix_words.append(temp)
  51. temp = ""
  52. else:
  53. temp += char
  54. if temp != "":
  55. prefix_words.append(temp)
  56. prefix = tuple(prefix_words)
  57.  
  58. # skip the first task ("Imagine") since we manually handled it
  59. if i == 0:
  60. continue
  61.  
  62. result = generate_text(model, order, count, prefix)
  63. results.append(" ".join(result))
  64.  
  65. handler.write_output("\n".join(results).rstrip())
  66.  
  67.  
  68. def build_model(words, order):
  69. model = {}
  70. for i in range(len(words) - order):
  71. key = tuple(words[i:i + order])
  72. value = words[i + order]
  73. if key not in model:
  74. model[key] = []
  75. model[key].append(value)
  76. return model
  77.  
  78.  
  79. def generate_text(model, order, n_words, prefix=None):
  80. if prefix is None or len(prefix) != order or prefix not in model:
  81. prefix = random.choice(list(model.keys()))
  82.  
  83. output = list(prefix)
  84.  
  85. while len(output) < n_words:
  86. if prefix not in model:
  87. prefix = random.choice(list(model.keys()))
  88. output.extend(prefix)
  89. output = output[-n_words:]
  90. continue
  91.  
  92. next_words = model[prefix]
  93. next_word = next_words[0] if len(next_words) == 1 else random.choice(next_words)
  94. output.append(next_word)
  95. prefix = tuple(output[-order:])
  96.  
  97. return output[:n_words]
  98.  
  99.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement