096222c64f
- 뉴스 크롤링 후 필요 내용 가공 - 유사 단어 추출 - 각종 문서안 필요 내용 가공
63 lines
2.0 KiB
Python
63 lines
2.0 KiB
Python
# 사용자가 입력하는 단어와 유사한 2개의 단어 추출
|
|
# csv 파일에서 단어를 읽어와서 유사도를 계산하고, 유사한 단어를 추출하는 함수
|
|
import csv
|
|
import gradio as gr
|
|
from langchain_community.document_loaders import CSVLoader
|
|
|
|
from dotenv import load_dotenv
|
|
import os
|
|
|
|
from langchain_core.output_parsers import StrOutputParser
|
|
from langchain_community.vectorstores import FAISS
|
|
from langchain_ibm import WatsonxEmbeddings
|
|
from langchain_ollama import OllamaEmbeddings
|
|
|
|
|
|
# 모델(LLM, Embeddding)
|
|
load_dotenv()
|
|
|
|
apikey = os.getenv("WATSONX_API_KEY")
|
|
project_id = os.getenv("WATSONX_PROJECT_ID")
|
|
watsonx_ai_url = os.getenv("WATSONX_URL")
|
|
|
|
watson_embedding = WatsonxEmbeddings(
|
|
model_id="ibm/granite-embedding-278m-multilingual",
|
|
url = f"{watsonx_ai_url}",
|
|
api_key = f"{apikey}",
|
|
project_id=f"{project_id}"
|
|
)
|
|
|
|
ollama_embedding = OllamaEmbeddings(model="nomic-embed-text-v2-moe")
|
|
|
|
# loader : csv
|
|
csv_loader = CSVLoader("./data/myData.csv",encoding="utf-8",csv_args={'delimiter':',', "fieldnames": ["Words"]})
|
|
csv_docs = csv_loader.load()
|
|
|
|
# 벡터스토어
|
|
vectorstore = FAISS.from_documents(documents=csv_docs, embedding=watson_embedding)
|
|
|
|
def find_similar(query):
|
|
"""
|
|
query 랑 유사한 단어 찾아서 리턴
|
|
"""
|
|
if not query.strip():
|
|
return "검색어 확인", ""
|
|
|
|
docs = vectorstore.similarity_search(query, k = 2)
|
|
result1 = docs[0].page_content if len(docs) > 0 else ""
|
|
result2 = docs[1].page_content if len(docs) > 0 else ""
|
|
|
|
return result1, result2
|
|
|
|
with gr.Blocks() as app:
|
|
gr.Markdown("🐴 Educate Kids")
|
|
gr.Markdown("비슷한 단어와 또는 문장을 찾아드립니다.")
|
|
|
|
query = gr.Textbox(label="단어 입력", placeholder="단어를 입력하세요. 예) 애플")
|
|
btn = gr.Button("Find Similar Things")
|
|
output1 = gr.Textbox(label="Top Match 1")
|
|
output2 = gr.Textbox(label="Top Match 2")
|
|
|
|
btn.click(find_similar, inputs=query, outputs=[output1, output2])
|
|
|
|
app.launch() |