VietCat commited on
Commit
cddf0a4
·
1 Parent(s): a9aa921

add data viewer

Browse files
Files changed (1) hide show
  1. app/law_document_chunker.py +14 -6
app/law_document_chunker.py CHANGED
@@ -31,12 +31,12 @@ class LawDocumentChunker:
31
  self.supabase_client = SupabaseClient(settings.supabase_url, settings.supabase_key)
32
  self.embedding_client = EmbeddingClient()
33
 
34
- # Regex patterns cho các cấp độ cấu trúc
35
- self.PHAN_REGEX = r"(Phần|PHẦN|Phần thứ)\s+(\d+|[IVXLCDM]+|nhất|hai|ba|tư|năm|sáu|bảy|tám|chín|mười)\.?\s*\n"
36
- self.PHU_LUC_REGEX = r"(Phụ lục|PHỤ LỤC)\s+(\d+|[A-Z]+)\.?\s*\n"
37
- self.CHUONG_REGEX = r"(Chương|CHƯƠNG)\s+(\d+|[IVXLCDM]+)\.?\s*.*\n"
38
- self.MUC_REGEX = r"(Mục|MỤC)\s+\d+\.?\s*.*\n"
39
- self.DIEU_REGEX = r"Điều\s+(\d+)\.\s*(.*)"
40
  self.KHOAN_REGEX = r"^\s*(\d+(\.\d+)*)\.\s*(.*)"
41
  self.DIEM_REGEX_A = r"^\s*([a-zđ])\)\s*(.*)"
42
  self.DIEM_REGEX_NUM = r"^\s*(\d+\.\d+\.\d+)\.\s*(.*)"
@@ -208,6 +208,10 @@ class LawDocumentChunker:
208
  for line in lines:
209
  level, level_value, level_content = self._detect_structure_level(line)
210
 
 
 
 
 
211
  # Nếu phát hiện cấp độ mới
212
  if level != "CONTENT" and level_value:
213
  # Lưu chunk hiện tại nếu có
@@ -224,9 +228,11 @@ class LawDocumentChunker:
224
 
225
  # Thêm vào stack NGAY LẬP TỨC
226
  chunk_stack.append((metadata.id, current_level, current_level_value))
 
227
 
228
  # Tìm parent cho level mới TRƯỚC KHI tạo chunk mới
229
  current_parent = self._find_parent_for_level(chunk_stack, level, level_priority)
 
230
 
231
  # Bắt đầu chunk mới
232
  current_chunk_content = line + "\n"
@@ -254,6 +260,7 @@ class LawDocumentChunker:
254
 
255
  # Thêm vào stack NGAY LẬP TỨC
256
  chunk_stack.append((metadata.id, current_level, current_level_value))
 
257
 
258
  current_chunk_content = ""
259
 
@@ -271,6 +278,7 @@ class LawDocumentChunker:
271
 
272
  # Thêm vào stack NGAY LẬP TỨC
273
  chunk_stack.append((metadata.id, current_level, current_level_value))
 
274
 
275
  logger.info(f"[CHUNKER] Created {len(chunks)} chunks from document")
276
  return chunks
 
31
  self.supabase_client = SupabaseClient(settings.supabase_url, settings.supabase_key)
32
  self.embedding_client = EmbeddingClient()
33
 
34
+ # Regex patterns cho các cấp độ cấu trúc - SỬA LẠI ĐỂ CHÍNH XÁC HƠN
35
+ self.PHAN_REGEX = r"^(Phần|PHẦN|Phần thứ)\s+(\d+|[IVXLCDM]+|nhất|hai|ba|tư|năm|sáu|bảy|tám|chín|mười)\.?\s*"
36
+ self.PHU_LUC_REGEX = r"^(Phụ lục|PHỤ LỤC)\s+(\d+|[A-Z]+)\.?\s*"
37
+ self.CHUONG_REGEX = r"^(Chương|CHƯƠNG)\s+(\d+|[IVXLCDM]+)\.?\s*"
38
+ self.MUC_REGEX = r"^(Mục|MỤC)\s+\d+\.?\s*"
39
+ self.DIEU_REGEX = r"^Điều\s+(\d+)\.\s*(.*)"
40
  self.KHOAN_REGEX = r"^\s*(\d+(\.\d+)*)\.\s*(.*)"
41
  self.DIEM_REGEX_A = r"^\s*([a-zđ])\)\s*(.*)"
42
  self.DIEM_REGEX_NUM = r"^\s*(\d+\.\d+\.\d+)\.\s*(.*)"
 
208
  for line in lines:
209
  level, level_value, level_content = self._detect_structure_level(line)
210
 
211
+ # Debug logging
212
+ if level != "CONTENT" and level_value:
213
+ logger.debug(f"[CHUNKER] Line: '{line.strip()}' -> Level: {level}, Value: {level_value}")
214
+
215
  # Nếu phát hiện cấp độ mới
216
  if level != "CONTENT" and level_value:
217
  # Lưu chunk hiện tại nếu có
 
228
 
229
  # Thêm vào stack NGAY LẬP TỨC
230
  chunk_stack.append((metadata.id, current_level, current_level_value))
231
+ logger.debug(f"[CHUNKER] Created chunk: {metadata.id[:8]}... Level: {current_level}, Parent: {current_parent}")
232
 
233
  # Tìm parent cho level mới TRƯỚC KHI tạo chunk mới
234
  current_parent = self._find_parent_for_level(chunk_stack, level, level_priority)
235
+ logger.debug(f"[CHUNKER] Found parent for {level}: {current_parent}")
236
 
237
  # Bắt đầu chunk mới
238
  current_chunk_content = line + "\n"
 
260
 
261
  # Thêm vào stack NGAY LẬP TỨC
262
  chunk_stack.append((metadata.id, current_level, current_level_value))
263
+ logger.debug(f"[CHUNKER] Created sub-chunk: {metadata.id[:8]}... Level: {current_level}, Parent: {current_parent}")
264
 
265
  current_chunk_content = ""
266
 
 
278
 
279
  # Thêm vào stack NGAY LẬP TỨC
280
  chunk_stack.append((metadata.id, current_level, current_level_value))
281
+ logger.debug(f"[CHUNKER] Created final chunk: {metadata.id[:8]}... Level: {current_level}, Parent: {current_parent}")
282
 
283
  logger.info(f"[CHUNKER] Created {len(chunks)} chunks from document")
284
  return chunks