| 8 | return p.encode().decode("unicode-escape").encode("latin1").decode("utf-8") |
| 9 | |
| 10 | class WikiPage: |
| 11 | def __init__(self): |
| 12 | self.page = "" |
| 13 | self.paragraphs = [] |
| 14 | self.sentences = [] |
| 15 | self.lookup_cnt = 0 |
| 16 | self.lookup_list = [] |
| 17 | self.lookup_keyword = None |
| 18 | |
| 19 | def reset_page(self): |
| 20 | self.page = "" |
| 21 | self.paragraphs = [] |
| 22 | self.sentences = [] |
| 23 | self.lookup_cnt = 0 |
| 24 | self.lookup_list = [] |
| 25 | self.lookup_keyword = None |
| 26 | |
| 27 | def get_page_obs(self, page): |
| 28 | self.page = page |
| 29 | paragraphs = [] |
| 30 | sentences = [] |
| 31 | # find all paragraphs |
| 32 | paragraphs = page.split("\n") |
| 33 | paragraphs = [p.strip() for p in paragraphs if p.strip()] |
| 34 | |
| 35 | # find all sentence |
| 36 | sentences = [] |
| 37 | for p in paragraphs: |
| 38 | sentences += p.split('. ') |
| 39 | sentences = [s.strip() + '.' for s in sentences if s.strip()] |
| 40 | self.paragraphs = paragraphs |
| 41 | self.sentences = sentences |
| 42 | return ' '.join(sentences[:5]) |
| 43 | |
| 44 | def construct_lookup_list(self, keyword : str): |
| 45 | sentences = self.sentences |
| 46 | parts = [] |
| 47 | for index, p in enumerate(sentences): |
| 48 | if keyword.lower() in p.lower(): |
| 49 | parts.append(index) |
| 50 | self.lookup_list = parts |
| 51 | self.lookup_keyword = keyword |
| 52 | self.lookup_cnt = 0 |
| 53 | |
| 54 | currentPage = WikiPage() |
| 55 | |