|
|
|
"""translation practice.ipynb |
|
|
|
Automatically generated by Colaboratory. |
|
|
|
Original file is located at |
|
https://colab.research.google.com/drive/1KrnodZGBZrUFdaJ9FIn8IhtWtCL7peoE |
|
""" |
|
import requests |
|
import gradio as gr |
|
from dotenv import load_dotenv |
|
import os |
|
|
|
from langchain_openai import OpenAI |
|
import spacy |
|
|
|
from langchain_openai import ChatOpenAI |
|
from langchain.schema import AIMessage, HumanMessage |
|
import pandas as pd |
|
|
|
|
|
load_dotenv() |
|
|
|
|
|
HF_TOKEN = os.getenv('HUGGING_FACE_TOKEN') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
API_URL = f"https://api-inference.huggingface.co/models/" |
|
|
|
headers = {"Authorization": f"Bearer {HF_TOKEN}"} |
|
|
|
|
|
DEBUG_MODE = True |
|
|
|
def debug_print(*args, **kwargs): |
|
if DEBUG_MODE: |
|
print(*args, **kwargs) |
|
|
|
def split_sentences_ginza(input_text): |
|
nlp = spacy.load("ja_core_news_sm") |
|
doc = nlp(input_text) |
|
sentences = [sent.text for sent in doc.sents] |
|
return sentences |
|
|
|
|
|
file_path = 'anki_japanese_english_pairs.csv' |
|
|
|
def load_csv(file_path): |
|
|
|
df = pd.read_csv(file_path) |
|
|
|
return df |
|
|
|
def get_sentence_pair(df): |
|
|
|
|
|
random_row = df.sample(1) |
|
|
|
|
|
|
|
|
|
japanese_sentence = str(random_row.iloc[0, 0]) |
|
english_sentence = str(random_row.iloc[0, 1]) |
|
|
|
debug_print("### Japanese sentence:", japanese_sentence) |
|
debug_print("### English sentence:", english_sentence) |
|
|
|
|
|
return japanese_sentence, english_sentence |
|
|
|
|
|
japanese_sentence, english_sentence = get_sentence_pair(load_csv(file_path)) |
|
|
|
|
|
llm = ChatOpenAI(temperature=0.7, model='gpt-3.5-turbo') |
|
|
|
def predict(message, history): |
|
|
|
|
|
initial_setup = f''' |
|
|
|
Japanese students are learning to translate Japanese text to English text. They will be given a Japanese sentence to translate, and will provide an English translation attempt. |
|
Based on the feedback you provide, they will revise their translation. This process will continue until their translation is accurate. |
|
|
|
Encourage the student by specifying the strengths of their writing. |
|
DO NOT PROVIDE THE CORRECT ENGLISH TRANSLATION. Let the student work it out. |
|
The student's translation need not match the provided English translation exactly, but it should be accurate to the Japanese text. |
|
Provide your feedback as a list. |
|
|
|
Execute the following tasks step by step: |
|
1. Ask the student to translate the following sentence from Japanese to English: {japanese_sentence}. Here is the English translation for reference: {english_sentence} |
|
2. Suggest only mechanical corrections (i.e., spelling, grammar, and punctuation) for the student. Ask for another translation attempt. |
|
''' |
|
|
|
history_langchain_format = [AIMessage(content=initial_setup)] |
|
|
|
|
|
for human, ai in history: |
|
history_langchain_format.append(HumanMessage(content=human)) |
|
history_langchain_format.append(AIMessage(content=ai)) |
|
|
|
history_langchain_format.append(HumanMessage(content=message)) |
|
gpt_response = llm(history_langchain_format) |
|
return gpt_response.content |
|
|
|
app = gr.ChatInterface(fn=predict, title="Translation Chatbot") |
|
|
|
app.launch() |