Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

__init__.py 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import re
  2. from nltk import word_tokenize
  3. from rag.nlp import stemmer, huqie
  4. def callback__(progress, msg, func):
  5. if not func :return
  6. func(progress, msg)
  7. BULLET_PATTERN = [[
  8. r"第[零一二三四五六七八九十百]+编",
  9. r"第[零一二三四五六七八九十百]+章",
  10. r"第[零一二三四五六七八九十百]+节",
  11. r"第[零一二三四五六七八九十百]+条",
  12. r"[\((][零一二三四五六七八九十百]+[\))]",
  13. ], [
  14. r"[0-9]{,3}[\. 、]",
  15. r"[0-9]{,2}\.[0-9]{,2}",
  16. r"[0-9]{,2}\.[0-9]{,2}\.[0-9]{,2}",
  17. r"[0-9]{,2}\.[0-9]{,2}\.[0-9]{,2}\.[0-9]{,2}",
  18. ], [
  19. r"[零一二三四五六七八九十百]+[ 、]",
  20. r"[\((][零一二三四五六七八九十百]+[\))]",
  21. r"[\((][0-9]{,2}[\))]",
  22. ] ,[
  23. r"PART (ONE|TWO|THREE|FOUR|FIVE|SIX|SEVEN|EIGHT|NINE|TEN)",
  24. r"Chapter (I+V?|VI*|XI|IX|X)",
  25. r"Section [0-9]+",
  26. r"Article [0-9]+"
  27. ]
  28. ]
  29. def bullets_category(sections):
  30. global BULLET_PATTERN
  31. hits = [0] * len(BULLET_PATTERN)
  32. for i, pro in enumerate(BULLET_PATTERN):
  33. for sec in sections:
  34. for p in pro:
  35. if re.match(p, sec):
  36. hits[i] += 1
  37. break
  38. maxium = 0
  39. res = -1
  40. for i,h in enumerate(hits):
  41. if h <= maxium:continue
  42. res = i
  43. maxium = h
  44. return res
  45. def is_english(texts):
  46. eng = 0
  47. for t in texts:
  48. if re.match(r"[a-zA-Z]", t.strip()):
  49. eng += 1
  50. if eng / len(texts) > 0.8:
  51. return True
  52. return False
  53. def tokenize(d, t, eng):
  54. d["content_with_weight"] = t
  55. if eng:
  56. t = re.sub(r"([a-z])-([a-z])", r"\1\2", t)
  57. d["content_ltks"] = " ".join([stemmer.stem(w) for w in word_tokenize(t)])
  58. else:
  59. d["content_ltks"] = huqie.qie(t)
  60. d["content_sm_ltks"] = huqie.qieqie(d["content_ltks"])