Aidan Phillips
commited on
Commit
·
052b859
1
Parent(s):
d7d2fdd
pull random sentences and better formatting
Browse files- app.py +53 -6
- categories/accuracy.py +2 -2
- pages/1_ EN-DE.py +0 -0
- pages/2_Scoring.py +0 -0
- requirements.txt +3 -1
- translations.json +102 -0
app.py
CHANGED
@@ -1,21 +1,51 @@
|
|
1 |
import time
|
|
|
2 |
|
3 |
import streamlit as st
|
4 |
|
5 |
from categories.accuracy import *
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
8 |
def response_generator(prompt):
|
9 |
source = st.session_state.german
|
10 |
acc = accuracy(source, prompt)
|
|
|
|
|
|
|
|
|
11 |
|
12 |
-
response = "Your
|
13 |
|
14 |
-
|
15 |
-
|
16 |
|
17 |
-
|
18 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
|
20 |
lines = response.split("\n")
|
21 |
for line in lines:
|
@@ -27,7 +57,14 @@ def response_generator(prompt):
|
|
27 |
|
28 |
|
29 |
def translation_generator():
|
30 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
|
32 |
message = (
|
33 |
f"Please translate the following sentence into English:"
|
@@ -58,6 +95,16 @@ if "messages" not in st.session_state:
|
|
58 |
]
|
59 |
st.session_state.german = "Das ist ein Test."
|
60 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
# Display chat messages from history on app rerun
|
62 |
for message in st.session_state.messages:
|
63 |
with st.chat_message(message["role"]):
|
|
|
1 |
import time
|
2 |
+
import json
|
3 |
|
4 |
import streamlit as st
|
5 |
|
6 |
from categories.accuracy import *
|
7 |
+
from categories.fluency import *
|
8 |
+
import random
|
9 |
|
10 |
+
# Set the sidebar title
|
11 |
+
st.sidebar.title("DE-EN")
|
12 |
+
|
13 |
+
def load_translations():
|
14 |
+
try:
|
15 |
+
with open("./translations.json", "r") as f:
|
16 |
+
return json.loads(f.read())
|
17 |
+
except Exception as e:
|
18 |
+
print(e)
|
19 |
+
return None
|
20 |
+
|
21 |
+
if "translations" not in st.session_state:
|
22 |
+
st.session_state.translations = load_translations()
|
23 |
|
24 |
def response_generator(prompt):
|
25 |
source = st.session_state.german
|
26 |
acc = accuracy(source, prompt)
|
27 |
+
ppl = pseudo_perplexity(prompt)
|
28 |
+
gre = grammar_errors(prompt)
|
29 |
+
|
30 |
+
total_score = 0.5 * acc["score"] + 0.2 * gre["score"] + 0.3 * ppl["score"]
|
31 |
|
32 |
+
response = "Your total translation score is: " + str(total_score) + "\n"
|
33 |
|
34 |
+
acc_s = acc["score"]
|
35 |
+
response += f"\nYour accuracy score is {acc_s}:\n"
|
36 |
|
37 |
+
for error in acc["errors"]:
|
38 |
+
response += f" - {error['message']}\n"
|
39 |
+
|
40 |
+
gre_s = gre["score"]
|
41 |
+
ppl_s = ppl["score"]
|
42 |
+
response += f"\nYour fluency score is {0.4 * gre_s + 0.6 * ppl_s}:\n"
|
43 |
+
|
44 |
+
for error in gre["errors"]:
|
45 |
+
response += f" - {error['message']}\n"
|
46 |
+
|
47 |
+
for error in ppl["errors"]:
|
48 |
+
response += f" - {error['message']}\n"
|
49 |
|
50 |
lines = response.split("\n")
|
51 |
for line in lines:
|
|
|
57 |
|
58 |
|
59 |
def translation_generator():
|
60 |
+
# Check if translations are available and not empty
|
61 |
+
if st.session_state.translations:
|
62 |
+
# Randomly select a translation from the list
|
63 |
+
st.session_state.german = random.choice(st.session_state.translations)["german"]
|
64 |
+
else:
|
65 |
+
st.error("No translations available.")
|
66 |
+
return
|
67 |
+
|
68 |
|
69 |
message = (
|
70 |
f"Please translate the following sentence into English:"
|
|
|
95 |
]
|
96 |
st.session_state.german = "Das ist ein Test."
|
97 |
|
98 |
+
if "translations" not in st.session_state:
|
99 |
+
try:
|
100 |
+
with open("translations.json", "r") as f:
|
101 |
+
st.session_state.translations = json.loads(f.read())
|
102 |
+
print(st.session_state.translations)
|
103 |
+
except (FileNotFoundError, json.JSONDecodeError):
|
104 |
+
st.session_state.translations = None
|
105 |
+
# Create an empty translations dictionary if none exists
|
106 |
+
st.error("No previous translations found. Starting with an empty translation history.")
|
107 |
+
|
108 |
# Display chat messages from history on app rerun
|
109 |
for message in st.session_state.messages:
|
110 |
with st.chat_message(message["role"]):
|
categories/accuracy.py
CHANGED
@@ -112,8 +112,8 @@ def __get_alignment_score(src_sentence: str, trg_sentence: str) -> list:
|
|
112 |
# Each method has a list of pairs indicating the indexes of aligned words (The alignments are zero-indexed).
|
113 |
alignments = aligner.get_word_aligns(src_list, trg_list)
|
114 |
|
115 |
-
src_aligns = {x[0] for x in alignments["
|
116 |
-
trg_aligns = {x[1] for x in alignments["
|
117 |
|
118 |
mistranslations = []
|
119 |
for i in range(len(src_list)):
|
|
|
112 |
# Each method has a list of pairs indicating the indexes of aligned words (The alignments are zero-indexed).
|
113 |
alignments = aligner.get_word_aligns(src_list, trg_list)
|
114 |
|
115 |
+
src_aligns = {x[0] for x in alignments["inter"]}
|
116 |
+
trg_aligns = {x[1] for x in alignments["inter"]}
|
117 |
|
118 |
mistranslations = []
|
119 |
for i in range(len(src_list)):
|
pages/1_ EN-DE.py
ADDED
File without changes
|
pages/2_Scoring.py
ADDED
File without changes
|
requirements.txt
CHANGED
@@ -3,4 +3,6 @@ transformers
|
|
3 |
torch
|
4 |
wordfreq
|
5 |
simalign
|
6 |
-
streamlit
|
|
|
|
|
|
3 |
torch
|
4 |
wordfreq
|
5 |
simalign
|
6 |
+
streamlit
|
7 |
+
requests
|
8 |
+
laser_encoders
|
translations.json
ADDED
@@ -0,0 +1,102 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
{"german": "Ich bin müde.", "english": "I am tired."},
|
3 |
+
{"german": "Das ist mein Buch.", "english": "That is my book."},
|
4 |
+
{"german": "Er hat einen Hund.", "english": "He has a dog."},
|
5 |
+
{"german": "Wir gehen nach Hause.", "english": "We are going home."},
|
6 |
+
{"german": "Sie liest ein Buch.", "english": "She is reading a book."},
|
7 |
+
{"german": "Ich liebe Schokolade.", "english": "I love chocolate."},
|
8 |
+
{"german": "Hast du Geschwister?", "english": "Do you have siblings?"},
|
9 |
+
{"german": "Heute ist es kalt.", "english": "It is cold today."},
|
10 |
+
{"german": "Wo ist der Bahnhof?", "english": "Where is the train station?"},
|
11 |
+
{"german": "Das Wetter ist schön.", "english": "The weather is nice."},
|
12 |
+
{"german": "Er arbeitet im Büro.", "english": "He works in the office."},
|
13 |
+
{"german": "Ich trinke Wasser.", "english": "I am drinking water."},
|
14 |
+
{"german": "Sie tanzt gerne.", "english": "She likes dancing."},
|
15 |
+
{"german": "Kannst du mir helfen?", "english": "Can you help me?"},
|
16 |
+
{"german": "Wir spielen Fußball.", "english": "We are playing soccer."},
|
17 |
+
{"german": "Das Auto ist neu.", "english": "The car is new."},
|
18 |
+
{"german": "Ich habe Hunger.", "english": "I am hungry."},
|
19 |
+
{"german": "Guten Morgen!", "english": "Good morning!"},
|
20 |
+
{"german": "Er spricht Deutsch.", "english": "He speaks German."},
|
21 |
+
{"german": "Ich mag Katzen.", "english": "I like cats."},
|
22 |
+
{"german": "Sie kocht gern.", "english": "She likes cooking."},
|
23 |
+
{"german": "Der Apfel ist rot.", "english": "The apple is red."},
|
24 |
+
{"german": "Das Fenster ist offen.", "english": "The window is open."},
|
25 |
+
{"german": "Ich wohne in Berlin.", "english": "I live in Berlin."},
|
26 |
+
{"german": "Was machst du?", "english": "What are you doing?"},
|
27 |
+
{"german": "Er spielt Gitarre.", "english": "He plays guitar."},
|
28 |
+
{"german": "Wir fahren morgen.", "english": "We are leaving tomorrow."},
|
29 |
+
{"german": "Ich verstehe nicht.", "english": "I don't understand."},
|
30 |
+
{"german": "Die Katze schläft.", "english": "The cat is sleeping."},
|
31 |
+
{"german": "Sie ist meine Freundin.", "english": "She is my friend."},
|
32 |
+
{"german": "Ich höre Musik.", "english": "I am listening to music."},
|
33 |
+
{"german": "Das Haus ist groß.", "english": "The house is big."},
|
34 |
+
{"german": "Er geht zur Schule.", "english": "He goes to school."},
|
35 |
+
{"german": "Hast du Zeit?", "english": "Do you have time?"},
|
36 |
+
{"german": "Ich schreibe einen Brief.", "english": "I am writing a letter."},
|
37 |
+
{"german": "Die Tür ist geschlossen.", "english": "The door is closed."},
|
38 |
+
{"german": "Sie arbeitet viel.", "english": "She works a lot."},
|
39 |
+
{"german": "Ich sehe einen Vogel.", "english": "I see a bird."},
|
40 |
+
{"german": "Das Kind lacht.", "english": "The child is laughing."},
|
41 |
+
{"german": "Wo wohnst du?", "english": "Where do you live?"},
|
42 |
+
{"german": "Ich lerne Deutsch.", "english": "I am learning German."},
|
43 |
+
{"german": "Kann ich helfen?", "english": "Can I help?"},
|
44 |
+
{"german": "Das ist mein Bruder.", "english": "That is my brother."},
|
45 |
+
{"german": "Sie hat lange Haare.", "english": "She has long hair."},
|
46 |
+
{"german": "Wir sind müde.", "english": "We are tired."},
|
47 |
+
{"german": "Der Hund bellt.", "english": "The dog is barking."},
|
48 |
+
{"german": "Ich esse einen Apfel.", "english": "I am eating an apple."},
|
49 |
+
{"german": "Wie heißt du?", "english": "What is your name?"},
|
50 |
+
{"german": "Mein Name ist Anna.", "english": "My name is Anna."},
|
51 |
+
{"german": "Ich liebe dich.", "english": "I love you."},
|
52 |
+
{"german": "Es ist sehr spät.", "english": "It is very late."},
|
53 |
+
{"german": "Ich habe keine Zeit.", "english": "I have no time."},
|
54 |
+
{"german": "Er liest die Zeitung.", "english": "He is reading the newspaper."},
|
55 |
+
{"german": "Sie singt ein Lied.", "english": "She is singing a song."},
|
56 |
+
{"german": "Ich sehe fern.", "english": "I am watching TV."},
|
57 |
+
{"german": "Das ist einfach.", "english": "That is easy."},
|
58 |
+
{"german": "Ich gehe einkaufen.", "english": "I am going shopping."},
|
59 |
+
{"german": "Wo arbeitest du?", "english": "Where do you work?"},
|
60 |
+
{"german": "Ich arbeite im Krankenhaus.", "english": "I work at the hospital."},
|
61 |
+
{"german": "Sie hat blaue Augen.", "english": "She has blue eyes."},
|
62 |
+
{"german": "Wir essen zu Abend.", "english": "We are having dinner."},
|
63 |
+
{"german": "Der Himmel ist blau.", "english": "The sky is blue."},
|
64 |
+
{"german": "Was kostet das?", "english": "How much does that cost?"},
|
65 |
+
{"german": "Ich nehme das.", "english": "I'll take that."},
|
66 |
+
{"german": "Ich bin krank.", "english": "I am sick."},
|
67 |
+
{"german": "Es tut mir leid.", "english": "I'm sorry."},
|
68 |
+
{"german": "Ich verstehe dich.", "english": "I understand you."},
|
69 |
+
{"german": "Mach das Fenster zu.", "english": "Close the window."},
|
70 |
+
{"german": "Wie spät ist es?", "english": "What time is it?"},
|
71 |
+
{"german": "Ich bin zu Hause.", "english": "I am at home."},
|
72 |
+
{"german": "Gute Nacht!", "english": "Good night!"},
|
73 |
+
{"german": "Sie tanzen gern.", "english": "They like to dance."},
|
74 |
+
{"german": "Ich gehe spazieren.", "english": "I am going for a walk."},
|
75 |
+
{"german": "Der Kaffee ist heiß.", "english": "The coffee is hot."},
|
76 |
+
{"german": "Woher kommst du?", "english": "Where are you from?"},
|
77 |
+
{"german": "Ich komme aus Deutschland.", "english": "I am from Germany."},
|
78 |
+
{"german": "Sie hat ein schönes Lächeln.", "english": "She has a beautiful smile."},
|
79 |
+
{"german": "Ich brauche Hilfe.", "english": "I need help."},
|
80 |
+
{"german": "Das ist mein Vater.", "english": "That is my father."},
|
81 |
+
{"german": "Sie ist meine Mutter.", "english": "She is my mother."},
|
82 |
+
{"german": "Ich liebe meine Familie.", "english": "I love my family."},
|
83 |
+
{"german": "Heute ist Montag.", "english": "Today is Monday."},
|
84 |
+
{"german": "Ich bin glücklich.", "english": "I am happy."},
|
85 |
+
{"german": "Er ist traurig.", "english": "He is sad."},
|
86 |
+
{"german": "Wir lernen zusammen.", "english": "We are learning together."},
|
87 |
+
{"german": "Das ist interessant.", "english": "That is interesting."},
|
88 |
+
{"german": "Ich bin bereit.", "english": "I am ready."},
|
89 |
+
{"german": "Er ist mein Lehrer.", "english": "He is my teacher."},
|
90 |
+
{"german": "Der Ball ist rund.", "english": "The ball is round."},
|
91 |
+
{"german": "Ich gehe zur Arbeit.", "english": "I am going to work."},
|
92 |
+
{"german": "Sie trägt ein rotes Kleid.", "english": "She is wearing a red dress."},
|
93 |
+
{"german": "Ich mag deinen Stil.", "english": "I like your style."},
|
94 |
+
{"german": "Er lacht laut.", "english": "He is laughing loudly."},
|
95 |
+
{"german": "Wir sehen uns morgen.", "english": "See you tomorrow."},
|
96 |
+
{"german": "Ich wünsche dir viel Glück.", "english": "I wish you good luck."},
|
97 |
+
{"german": "Bitte sei leise.", "english": "Please be quiet."},
|
98 |
+
{"german": "Ich habe es vergessen.", "english": "I forgot it."},
|
99 |
+
{"german": "Es ist nicht wichtig.", "english": "It is not important."},
|
100 |
+
{"german": "Können wir reden?", "english": "Can we talk?"}
|
101 |
+
]
|
102 |
+
|