Gränssnitt för FakeGranska. Lars Mattsson

Relevanta dokument
Grim. Några förslag på hur du kan använda Grim. Version 0.8

Beskrivning av gesällprov RMI Chat Mikael Rydmark

Lathund - Konfiguration av PLC och dator

Grund. Markera Användaren och välj Användarinställningar till vänster i Grids utforskare. Välj Talinställningar

Word Grunderna 1. Om du kan det allra enklaste i Word, hoppa över uppgifterna A-E.

Gran Canaria - Arbetsbeskrivning knapplänkar (Mediator 8)

Daniel Clarhed

Installation av atmel Studio på mac / linux

INLEDNING MENYN FÖR FILNAVIGERING

Jaktpejl.se. Användarmanual. Av: Erik Åberg

A. Datorn från grunden

Omsorgen Användarhandledning

Manual

Här kan du välja befintligt upplägg eller skapa ett nytt. Klicka på edit uppe till höger för att redigera och/eller skapat nytt.

LADDA UPP EN PDF-FIL OCH LÄNKA TILL DEN I DIN ARTIKELTEXT

Manual matchstatistik. FIBA Livestats version 7. Dokumentet bör finnas vid statistikdatorn innan matchen.

Om manualen inte räcker till vänligen kontakta Madeleine Rietz på ITavdelningens supportmejl

Grafiska användargränssnitt i Java

Hur man skapa en Wiki.

Fyra i rad Javaprojekt inom TDDC32

Anvä ndärguide Nyä Expeditionsresor

Lathund skapa och redigera sidor en projektwebb

Mappar och filer för webbsidor

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

Publicera material i Learn

Manual för Typo3 version 4.2

Manual 1.0 för att posta nyheter på IF Åland orienterings hemsida (

Användarmanual TextAppen Online

INSTÄLLNINGAR FÖR IRONCADS 2D-RITNING

Grafiska användargränssnitt i Java

Gör så här för att rapportera:

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Handbok Färgredigeraren. Artur Rataj Översättare: Stefan Asserhäll

Så här funkar Föreningsliv

NetBeans 7. Avsikt. Projektfönster

Kursvärdering. Denna manual beskriver hur du kan skapa en mapp i Fronter som heter Kursvärdering där du ladda upp reslutat från kursutvärderingar.

INSTALLATIONSGUIDE TILL ANDROID UTVECKLINGSMILJÖ

Verktyget är begränsat till Microsoft Internet Explorer v 7.0 och uppåt

Manual för webbpublicering. Enköpings kommun

Dokument i klassens aktivitet

Användarmanual WebNailer. 19 januari 2004

Axiell Arena Visa BOOK-IT:s resurser

JavaScript del 3 If, Operatorer och Confirm

Labora&on 1 Introduk&on &ll utvecklingsmiljön övningar/uppgi<er

Administrationsmanual ImageBank 2

Installation av M7005 och till M7005 hörande serverprogram

Introduktion. Skriv in användarnamn och lösenord


Manual för Typo3 version 4.04

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Datorlaboration Avbildningskvalitet

ANVÄNDARGUIDE. ViTex

Snabbguide till de nya funktionerna

3. Hämta och infoga bilder

IT-körkort för språklärare. Modul 9: Rätta skrivuppgifter

Om Publisher Publisher är ett program som passar bra att använda när du vill sammanställa bild och text för att skapa tillexempel broshyrer,

Välkomna till. Utbildning i Episerver 9 för Handboksredaktörer och Handboksansvariga

Grundläggande Ordbehandling Microsoft Word

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

Manual för banläggning i OCAD IF ÅLAND

Lathund för BankID säkerhetsprogram

Word. En lathund. Uppbyggd under utbildning!

Handledning för redigering av lagsidor.

Instruktion för installation av etikettskrivare 2.27

Manual för ansökan till Stiftelsen Kjellbergska Flickskolans Donationer

SORSELE KOMMUN. Handbok OEW. 28 sept 2012 Mari-Anne Englund Barbro Olofsson. Sorsele kommun Version , rev (19)

PROGRAMMERING A VB 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL BASIC

Manual Skogsappen - Hemkomstkontroll

Microsoft Word. Lathund för. Innehåll. Autokorrigering. Autotext. Format

Manual för bemanning i operationsprogrammet

Använda Internet. med hjälp av Internet Explorer. Nybörjarguide

Kom igång med FrontPage 2003

NetBeans 5.5. Avsikt. Projektfönster

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

Till flera av ovanstående finns det dessutom varianter, vilka kommer att presenteras i de olika avsnitten.

Hjälper dig att kontrollera din text efter felstavningar och lättförväxlade ord. Manual

Manual TorTalk version 1.3

Lathund Word. Här får du en liten Lathund i Word.

Installation av datafil för lokal lagring av e-post i Microsoft Outlook 2016

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Manual TorTalk Mac 1.0

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

Hantering av systemet Zimbra

Vilken version av Dreamweaver använder du?

Installationsanvisningar. till IST Analys

Installation och setup av Net-controller AXCARD DS-202

1. Starta programmet 2. Välja projekt antingen redan skapat eller nytt

PP7Mobile User s Guide

Manual GISportalen (MapGuide) På Internet

Spelprogrammering med XNA och MonoGame

Kom igång med Communicate In Print

SymWriter 2 Komma igång med symboldokument

E-post. A. Windows Mail. Öppna alternativ. Placera ikonen på skrivbordet.

AIF:arens guide till cyberrymden

SKAPA EN WWW-LÄNK I EN ARTIKELTEXT

GitHub for Windows och GitShell

Skapa ett register över din grupp/klass

1. ActiveGPS 2.00 by TJ

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Transkript:

Gränssnitt för FakeGranska av Lars Mattsson (larsmatt@kth.se)

Innehållsförteckning 1 Introduktion...3 2 Genomförande:...3 3 Användning...5 4 Kända buggar:...6 5 Källförteckning...6 2

1 Introduktion Taken med detta projekt var att skapa ett grafiskt gränssnitt till fakegranska åt Jonas Sjöberg på KTH. Jonas ville kunna demontera fakegranska med ett grafiskt program istället för Telnet. Programmet skulle kunna visa vilka ord i en given text var felaktiga genom någon form av färgkodning. Fakegranska klarar av idag 3 olika fel, kongruens fel, ordföljds fel och särskrivningar. Programmet skulle minst klara av att visa kongruens fel och felaktig ordföljd med olika färg för de två olika felen. Programmet skall även klara av att läsa från en fil och möjligtvis spara till en fil. Fakegranska är uppbyggt med separata program som för varje fel har en server som kan säga om en mening har något felaktigt ord. Dessa serverar tar lite olika former av ordklass taggade ord. Alla serverna vill den fullständiga ordklassen med ordklass, genus, numerus och bestämdhet. Men hur informationen om taggen skall skickas till servern varierar. Kongruens servern vill ha taggen uppdelad i 4 olika kolumner med antigen tabbar eller mellanslag mellan varje kolumn. Medan ordföljds servern och särskrivnings servern kan hela PoS(Part of Speech) informationen. Tekniken bakom hur kongruens fel och felaktig ordföljd är uppbyggd är denna: Med utgångspunkt från SUC (Stockholm-Uppsala-corpus) är korrekt så tilldelade man varje ord att det var okej. Sedan beroende på vilket av felen så gjorde man lite olika. För kongruens felen slumpades ett ord i varje mening fram och sedan tog man ett ord med samma lemma men med en annorlunda taggning. Sedan markerades det som felaktigt och fakegranska tränades på att känna igen detta fel. För att fakegranska skulle upptäcka felaktig ordföljd gjordes på liknade sätt. För varje mening i SUC så slumpades ett ord och bytte plats med ett annat ord som låg antigen ett eller två steg ifrån det slumpade ordet. Sedan märktes båda orden som felaktiga. Sedan tränades fakegranska på att känna igen detta fel. Träningen sker med någon form av maskininlärnings algoritm. 2 Genomförande: För det grafiska gränssnittet valdes java av dessa anledningar. Java är plattformsoberoende vilket var en av önskemålet för programmet. Java har enkla möjligheter att skapa ett grafiskt gränssnitt. Det första som behövdes göra var att ta reda på hur java kan behandla text och vilka möjligheter för färgning av text som fanns. I 1.4.2 fanns möjligheterna för att skapa en JTextPane som klarade av att ge olika format till texter, exempelvis färger och undertrycket. JTextPane ligger i javas swing paket och använder sig av ett dokument som innehåller text samt vilket stil texten har. Om ni är mer intresserad kan ni gå och läsa på sun tutorial om text i java[1]. Det som är viktigt att veta är att det går att ta bort en sträng samt att placera in en sträng i texten på givna positioner. Då fakegranska serverna måste ha ordklasserna så måste varje ord taggas i dess sammanhang. Detta görs genom att skicka alla meningar till en server som tolkar dessa och ger tillbaka ordet med dess PoS (Part of Speech). En utmaning här var att punkt (.), komma(,) och citattecken( ) inte får sitta ihop med ordet. Till detta använde jag mig av StringTokenizer och lite extra hackande. Programmet kan lätt luras att göra fel om flera citattecken används på eller liknade. 3

Som nämnt tidigare tog de olika serverna olika format på taggningen. För att tolka hur PoS taggen skall splittras upp i de olika kolumnerna som kongruens servern vill ha fick jag en fil av Jonas. Denna fil innehöll PoS följt av 4 stycken kolumner skilda med tabbar som motsvarar PoS ordklass, genus, numerus och bestämdhet. När programmet startas läser jag in hela filen och lägger PoS() delen av taggen som en nyckel i en hashtabell. Sedan lägger jag in en sträng med den info som kongruens servern vill ha som värde i hashtabellen. Sedan när har fått sina ord taggade i PoS så är det bara att fråga hashtabellen efter strängen för kongruens servern. Självklart fungerar detta för andra serverar som behöver splittrade taggar. För projektet skapades en menings klass(sentence.java) för att ha koll på de meningar som fanns i dokumentet. Den blev tyvärr inte utnyttjad till sin fulla kraft. Tanken var från början att den skulle innehålla information ifall en mening var ändrad efter att den blivit granskad av fakegranska. Då flera saker kan påverka att alla meningar måste kollas igen gör programmet en fullständig kontroll hela tiden. Dock så utnyttjas detta lite då meningar som inte är ändras inte läggs till i vektorn. av alla meningar, utan bara meningar som påverkas sedan förra kollen byts ut eller läggs till. Menings klassen innehåller också information om vart i dokumentet första ordet börjar och hur lång meningen är. Menings klassen innehåller också taggningen av varje ord ( punkt komma och citattecken räknas som ord). Både den splittrade och original PoS. Samt efter att meningen blivit kollad av fakegranska servern temporärt vilka av orden i meningen som är okej och vilka som är felaktiga. Programmet startas av en controller klass som skall sköta flödet av information mellan fakegranska servrarna och det grafiska gränssnittet. Den innehåller bland annat vektorn med alla meningar. Som från början är tom tills användaren väljer att kontrollera sin text. Den innehåller också en streamcontroller som tar hand om allt som skall skickas och tas emot av fakegranska. Denna är skapad på efterhand då kontroller klassen blev för stor. Det grafiska gränssnittet som använder kommer i kontakt med kontrollerars av klassen FakeGranskaWindow.java. Den är uppbyggd med en frame(jframe) ett antal paneler(jpanel) och en textarea(jtextpane). Den har även en referens till kontoller klassen. När användaren gör något med texten som finns i rutan, lägger till eller tar bort sköts det av java egna lyssnare för dokument och textpanes. Programmet lyssnar dock efter vart i texten det görs och säger till controller att här har det ändras. För att programmet skall veta vilka meningar är ändrade. Sen tar den alla meningar efter den första ändrade meningen och tolkar dom som ändrade också. Men som sagts tidigare så är detta egentligen meningslöst då allt ändå skickas till servarna. Det borde inte vara för svårt att fixa så att meningar som är ok inte skickas till servern för taggning exempelvis. När användaren väljer att granska texten gör detta med check knappen. Då skapas en ny tråd i för att ta hand om granskningen. Detta för att taggservern är otroligt seg och det annars ser ut att programmet har hängt sig. Medan allt kollas går det inte att ändra texten eller trycka på check knappen igen. Innan själva tråden skapas så skickas en sträng innehållandes ändrade meningar till controller klassen. Som där tar bort alla obsoleta meningar i vektorn av alla meningar och lägger dit dom nya istället. 4

Sedan i den nya tråden körs ett varv i kontroller klassens run metod (kontroller implementerar runnable). Där så först taggar den alla meningar, även de som har korrekt taggar. Sedan ifall användaren valt att kolla efter första feltypen (ordföljd förvald) går varje mening igenom ord för ord och skickas, ett ord per rad med den grundläggande PoS. till motsvarade fakegranska server. Därefter läser programmet svaret som kommer i from av ord ok/annat, där annat är fel. Då om det inte är ok så markeras det i meningsklassen att ord x inte är ok. När detta är gjort så anrops en metod som färgar de felaktiga orden i meningarna till vald färg. Den går igenom alla meningar i ett svep. Sedan görs nästan samma sak för igen, om användarn valt att kolla efter feltyp 2 (förvald kongruens). Skillnaden är att nu skickas den splittrade taggen istället. Varje feltyp har var sin funktion som gör dessa saker. Borde kunna använda samma metod med if-satser istället. 3 Användning. I menyn går det för användaren att öppna och spara filer under file menyn. Både öppna och stänga avvänder sig av JFile Chooser som är ett grafiskt gränssnitt över filsystemet. Det går att specificera en fil genom att antigen klicka på den eller skriva in namnet själv och sedan välja öppna eller spara beroende på vilket man gör. Det går att öppna alla typer av filer men bara om de sparade i ren textformat kommer det visas något vettigt. Under edit menyn går det att välja att klippa ut/kopiera markerad text samt att klistra in text. Den sista menyn options tillhandahåller möjligheter att ändra på förvalda värden. För går det att ändra antalet tecken som dokumentet får använda sig av (förvald 1500). Det går att ändra till mindre antal tecken än vad dokumentet för tillfället innehåller. Om ni gör detta kommer de tecken som är efter det valda antalet tecken försvinna. Det går också ändra vilken taggserver som skall användas istället för den förvalda på skrutten.nada.kth.se port 6151. Det går också att välja en ny fil som talar om hur taggar skall splittras. Detta kan kanske användas för andra språk. Sedan finns det två undermenyer som representerar de två felen som kan kollas. Dom får av enkelhet heta error type 1 och error type 2. Det första felet står till vänster om check och det andra felet till höger. Varje undermeny har lika utseende med look for this error som om ikryssad gör att programmet försöker upptäcka den typen av fel. Change url and port som först frågar efter ny adress till servern sen efter portrn. Change error color som visar en JColorChooser, vilket är ett fönster med en färg palett. Sedan tills sist finns det möjlighet att namnge felet vilket då gör att texten till vänster(fel 1) eller höger(fel 2) om check knappen byter namn. På figuren 1 kan ni se att det strå kongruens till höger om check knappen i rött. När användaren vill granska sin text efter att laddat in ny text från fil eller bara skrivit in ny text själv görs detta med check knappen. Därefter tar det en stund att få ett svar, mellan 10 till 30 sekunder pga av den förinställda tagservern. Sedan kommer texten att markeras med understreckning och med felets färg, se figur 1. 5

Figur 1 4 Kända buggar: Under mac verkar den inte klara av att skicka åäö eller linkade för den ger andra svar. På den texten som programmet statar med hittar den dock några felaktiga ordföljder som den borde alltid hitta? Samt under mac så visas det inte att Check this error är en check box ruta. Utan om det inte är markerad så ser den ut som vilket meny alternativ som helts. Om felaktiga adresser till serverna och tag filen specificeras så kommer programmet inte att fungera. 5 Källförteckning [1] http://java.sun.com/docs/books/tutorial/uiswing/components/text.html 6