|
<!DOCTYPE html> |
|
<html lang="en"> |
|
|
|
<head> |
|
<meta charset="UTF-8"> |
|
<title>Translation - huggingface.js</title> |
|
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"> |
|
<link rel="stylesheet" href="css/styles.css"> |
|
</head> |
|
|
|
<body> |
|
<div class="container-main"> |
|
|
|
|
|
<div class="row mt-5"> |
|
<div class="col-md-12 text-center"> |
|
<a href="index.html" class="btn btn-outline-secondary" |
|
style="color: #3c650b; border-color: #3c650b;">Back to Main Page</a> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="container mt-5"> |
|
|
|
<div class="text-center"> |
|
<h2>Natural Language Processing</h2> |
|
<h4>Translation</h4> |
|
</div> |
|
|
|
|
|
<form id="hf-form"> |
|
<input |
|
type="text" |
|
style="display:none" |
|
autocomplete="username" |
|
value="user" |
|
/> |
|
<div> |
|
<label for="hf-token">Hugging Face Token (optional but limited if absent)</label> |
|
<input |
|
id="hf-token" |
|
placeholder="HF-TOKEN" |
|
type="password" |
|
autocomplete="new-password" |
|
/> |
|
</div> |
|
<div id="translation-container" class="container mt-4"> |
|
<h5>Translation w/ Xenova/t5-base:</h5> |
|
<div class="d-flex align-items-center"> |
|
<label for="translationText2" class="mb-0 text-nowrap" style="margin-right: 15px;">Enter Text to |
|
Translate:</label> |
|
<input type="text" class="form-control flex-grow-1" id="translationText2" value="My name is Wolfgang and I live in Amsterdam" |
|
placeholder="Enter text" style="margin-right: 15px; margin-left: 15px;"> |
|
<button id="translateButton2" class="btn btn-primary">Translate</button> |
|
</div> |
|
|
|
<div class="mt-4"> |
|
<h4>Output:</h4> |
|
<pre id="outputArea2"></pre> |
|
</div> |
|
</div> |
|
|
|
|
|
<div class="row mt-5"> |
|
<div class="col-md-12 text-center"> |
|
<a href="index.html" class="btn btn-outline-secondary" |
|
style="color: #3c650b; border-color: #3c650b;">Back to Main Page</a> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</form> |
|
|
|
<script type="module"> |
|
import { HfInference } from 'https://cdn.jsdelivr.net/npm/@huggingface/[email protected]/+esm'; |
|
let hf; |
|
|
|
|
|
async function initializeModel() { |
|
const token = document.getElementById("hf-token").value; |
|
console.log("TOKEN: ", token); |
|
hf = new HfInference(); |
|
|
|
} |
|
|
|
async function translateText() { |
|
|
|
if (!hf) { |
|
console.error("HfInference is not initialized."); |
|
return; |
|
} |
|
|
|
const textFieldValue = document.getElementById("translationText2").value.trim(); |
|
console.log(textFieldValue) |
|
try { |
|
const result = await hf.translation({ |
|
model: 't5-base', |
|
inputs: textFieldValue, |
|
}); |
|
document.getElementById("outputArea2").innerText = JSON.stringify(result, null, 2); |
|
} catch (error) { |
|
console.error("Error during translation:", error); |
|
|
|
} |
|
} |
|
|
|
window.addEventListener("DOMContentLoaded", (event) => { |
|
initializeModel(); |
|
document.getElementById("translateButton2").addEventListener("click", translateText); |
|
}); |
|
</script> |
|
</body> |
|
|
|
</html> |