Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <title>Sentiment Analysis - Hugging Face Transformers.js</title> | |
| <script type="module"> | |
| // To-Do: transfomers.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค pipeline ํจ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ import ๊ตฌ๋ฌธ์ ์์ฑํ์ญ์์ค. | |
| // ํํธ: import {} | |
| // Make it available globally | |
| window.pipeline = pipeline; | |
| </script> | |
| <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"> | |
| <!-- Back to Home button --> | |
| <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> | |
| <!-- Content --> | |
| <div class="container mt-5"> | |
| <!-- Centered Titles --> | |
| <div class="text-center"> | |
| <h2>Natural Language Processing</h2> | |
| <h4>Sentiment Analysis (Text Classification)</h4> | |
| </div> | |
| <!-- Actual Content of this page --> | |
| <div id="sentiment-analyzer-container" class="container mt-4"> | |
| <h5>Single Input:</h5> | |
| <div class="d-flex align-items-center"> | |
| <label for="sentimentText" class="mb-0 text-nowrap" style="margin-right: 15px;">Enter Text to | |
| Analyze:</label> | |
| <input type="text" class="form-control flex-grow-1" id="sentimentText" value="I love transformers!" | |
| placeholder="Enter text" style="margin-right: 15px; margin-left: 15px;"> | |
| <button id="analyzeButton" class="btn btn-primary" onclick="analyzeSentiment()">Analyze</button> | |
| </div> | |
| <div class="mt-4"> | |
| <h4>Output:</h4> | |
| <pre id="outputArea"></pre> | |
| </div> | |
| </div> | |
| <hr> <!-- Line Separator --> | |
| <div id="sentiment-analyzer-container2" class="container mt-4"> | |
| <h5>Multiple Inputs:</h5> | |
| <div class="d-flex align-items-center mb-2"> | |
| <label for="sentimentText1" class="mb-0 text-nowrap" style="margin-right: 15px;">Enter Text to | |
| Analyze 1:</label> | |
| <input type="text" class="form-control flex-grow-1" id="sentimentText1" value="I love transformers!" | |
| placeholder="Enter text" style="margin-right: 15px; margin-left: 15px;"> | |
| </div> | |
| <div class="d-flex align-items-center"> | |
| <label for="sentimentText2" class="mb-0 text-nowrap" style="margin-right: 15px;">Enter Text to | |
| Analyze 2:</label> | |
| <input type="text" class="form-control flex-grow-1" id="sentimentText2" value="I hate transformers!" | |
| placeholder="Enter text" style="margin-right: 15px; margin-left: 15px;"> | |
| <button id="analyzeButton" class="btn btn-primary ml-2" | |
| onclick="analyzeSentimentMulti()">Analyze</button> | |
| </div> | |
| <div class="mt-4"> | |
| <h4>Output:</h4> | |
| <pre id="outputArea2"></pre> | |
| </div> | |
| </div> | |
| <hr> <!-- Line Separator --> | |
| <!-- Toxic Comment Classification --> | |
| <div id="toxic-container" class="container mt-4"> | |
| <h5>Toxic Comment Classification (Return All Classes):</h5> | |
| <div class="d-flex align-items-center"> | |
| <label for="toxicText" class="mb-0 text-nowrap" style="margin-right: 15px;">Enter Toxic | |
| Text:</label> | |
| <input type="text" class="form-control flex-grow-1" id="toxicText" value="I hate you!" | |
| placeholder="Enter text" style="margin-right: 15px; margin-left: 15px;"> | |
| <button id="toxicButton" class="btn btn-primary" onclick="toxicReview()">Review</button> | |
| </div> | |
| <div class="mt-4"> | |
| <h4>Output:</h4> | |
| <pre id="toxicOutputArea"></pre> | |
| </div> | |
| </div> | |
| <!-- Back to Home button --> | |
| <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> | |
| <script> | |
| let sentimentAnalysis; | |
| let reviewer; | |
| let toxic_classifier; | |
| // Initialize the sentiment analysis model | |
| async function initializeModel() { | |
| // pipeline ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฑ๋ถ์์ ์ฌ์ฉํ Xenova/distilbert-base-uncased-finetuned-sst-2-english ๋ชจ๋ธ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ sentimentAnalysis์ ์ ์ฅํ์ญ์์ค | |
| // ํํธ: sentimentAnalysis = await pipeline | |
| } | |
| async function analyzeSentiment() { | |
| const textFieldValue = document.getElementById("sentimentText").value.trim(); | |
| const result = await sentimentAnalysis(textFieldValue); | |
| document.getElementById("outputArea").innerText = JSON.stringify(result, null, 2); | |
| } | |
| async function analyzeSentimentMulti() { | |
| const textFieldValue1 = document.getElementById("sentimentText1sentimentText").value.trim(); | |
| const textFieldValue2 = document.getElementById("sentimentText2").value.trim(); | |
| // ์์์ ์์ฑํ ๊ฐ์ฑ๋ถ์ ๋ชจ๋ธ ๊ฐ์ฒด์ sentimentText1๊ณผ sentimentText2๋ฅผ ์ ๋ ฅํ์ฌ ๊ฐ์๋ถ์์ ์ํํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ result์ ์ ์ ํ์ญ์์ค. | |
| // ํํธ : cont result = | |
| document.getElementById("outputArea2").innerText = JSON.stringify(result, null, 2); | |
| } | |
| async function toxicReview() { | |
| const textFieldValue = document.getElementById("toxicText").value.trim(); | |
| const result = await toxic_classifier(textFieldValue, { topk: null }); | |
| document.getElementById("toxicOutputArea").innerText = JSON.stringify(result, null, 2); | |
| } | |
| // Initialize the model after the DOM is completely loaded | |
| window.addEventListener("DOMContentLoaded", initializeModel); | |
| </script> | |
| </body> | |
| </html> |