singhankur01 commited on
Commit
70ec4b9
·
verified ·
1 Parent(s): 12c2b8c

Update utils/DocsLoader.py

Browse files
Files changed (1) hide show
  1. utils/DocsLoader.py +14 -4
utils/DocsLoader.py CHANGED
@@ -3,12 +3,14 @@ import tempfile
3
  import requests
4
 
5
  from fastapi import HTTPException
 
6
  # from langchain_community.document_loaders import PyPDFLoader, Docx2txtLoader
7
  from langchain_community.document_loaders import PyMuPDFLoader, Docx2txtLoader
8
  from langchain.text_splitter import RecursiveCharacterTextSplitter
9
  from langchain_text_splitters.sentence_transformers import SentenceTransformersTokenTextSplitter # give better results but slow can use later for project
10
  from langchain.schema import Document
11
-
 
12
  MODEL_DIR = os.path.join("/tmp", "e5-large-v2")
13
 
14
  def load_and_chunk(url: str) -> list[Document]:
@@ -49,7 +51,15 @@ def load_and_chunk(url: str) -> list[Document]:
49
 
50
  else:
51
  raise HTTPException(400, f"Unsupported document type: {content_type}")
 
 
 
 
 
 
 
52
 
53
- # splitter = RecursiveCharacterTextSplitter(chunk_size=600, chunk_overlap=80,separators=["\n\n", "\n", ".", " ", ""])
54
- splitter = SentenceTransformersTokenTextSplitter(model_name = MODEL_DIR,tokens_per_chunk=500, chunk_overlap=80)
55
- return splitter.split_documents(docs)
 
 
3
  import requests
4
 
5
  from fastapi import HTTPException
6
+ import nltk
7
  # from langchain_community.document_loaders import PyPDFLoader, Docx2txtLoader
8
  from langchain_community.document_loaders import PyMuPDFLoader, Docx2txtLoader
9
  from langchain.text_splitter import RecursiveCharacterTextSplitter
10
  from langchain_text_splitters.sentence_transformers import SentenceTransformersTokenTextSplitter # give better results but slow can use later for project
11
  from langchain.schema import Document
12
+ # Download NLTK sentence tokenizer
13
+ nltk.download('punkt', quiet=True)
14
  MODEL_DIR = os.path.join("/tmp", "e5-large-v2")
15
 
16
  def load_and_chunk(url: str) -> list[Document]:
 
51
 
52
  else:
53
  raise HTTPException(400, f"Unsupported document type: {content_type}")
54
+ # --- Step 1: Sentence split ---
55
+ sentence_docs = []
56
+ for doc in docs:
57
+ sentences = nltk.sent_tokenize(doc.page_content)
58
+ for sent in sentences:
59
+ if sent.strip():
60
+ sentence_docs.append(Document(page_content=sent, metadata=doc.metadata))
61
 
62
+ splitter = RecursiveCharacterTextSplitter(chunk_size=600, chunk_overlap=80,separators=["\n\n", "\n", ".", " ", ""])
63
+ # splitter = SentenceTransformersTokenTextSplitter(model_name = MODEL_DIR,tokens_per_chunk=500, chunk_overlap=80)
64
+ # return splitter.split_documents(docs)
65
+ return splitter.split_documents(sentence_docs)