Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package hakija
- import scala.collection.mutable.ArrayBuffer
- import scala.xml
- import java.io.PrintWriter
- import scala.xml.XML
- import scala.io.Source
- object Hakija {
- def to8(s: String): String = {
- s.replaceAll("ä","auml&").replaceAll("ö","ouml&").replaceAll("Ä","Auml&").replaceAll("Ö","Ouml&")
- }
- def haeLinkitLuokasta(osoite: String, tiedostonimi: String) = {
- //hakee tietystä wiktionary-luokasta sanalistan ja linkit artikkeleihin
- val ab = ArrayBuffer[String]()
- var seuraava1: Option[String] = Some(osoite)
- var sana = "aakkonen" //muista vaihtaa tämä muuttuja ennen hakemista ENSIMMÄISEKSI SANAKSI
- var sana1 = sana //sana1 on sivun ensimmäinen sana, josta tarkastetaan, onko sivulla uusia sanoja.
- // viimeisellä luokan sivulla on yleensä vain yksi sana, joka on edelliseltä sivulta, jolloin
- // sana1 on sama kuin viimeisin tallennettu sana, jolloin looppi pysähtyy.
- while (seuraava1 != None) {
- sana1 = sana
- println(seuraava1.get)
- val osoitteenXML = XML.load(to8(seuraava1.get)) \\ "li"
- for (a <- osoitteenXML) {
- val otsikko = (a \ "a" \ "@title").toString()
- val linkki = (a \ "a" \ "@href").toString
- if (!(linkki.contains(" ") || otsikko.contains(" ")) && linkki != "" && otsikko != "" && !(otsikko.contains("Wiktionary"))) {
- ab += (otsikko+ " " + linkki)
- sana = otsikko
- }
- }
- val seuraava = XML.load(to8(seuraava1.get)) \\ "a"
- println(seuraava.size)
- println("sana on : " + sana + " sana1 on : " + sana1)
- if (sana1 == sana || sana == "öylättilautanen") {
- seuraava1 = None
- } else {
- seuraava1 = Some(seuraava1.get.replaceAll(sana1,sana).replaceAll(sana1.toUpperCase(), sana.toUpperCase()))
- }
- }
- val tiedosto = new PrintWriter(tiedostonimi)
- try {
- for (n <- ab) {
- tiedosto.println(n)
- }
- } finally {
- tiedosto.close()
- }
- }
- def haeNominit(luku: String, kirjoitus: String) {
- //hakee nominit ja muodostaa niistä tekstitiedoston
- val printattavat = ArrayBuffer[String]()
- val tiedosto = Source.fromFile(luku)
- val rivit = tiedosto.getLines().toVector
- val rivienMaara = rivit.size
- var counter = 0
- println("\n"+"ladattu internetistä"+"\n")
- val ptiedosto = new PrintWriter(kirjoitus)
- try {
- for (a <- rivit) {
- counter += 1
- if (counter % (rivienMaara /100) == 0) {
- println("" + counter / (rivienMaara/100) + " % ")
- }
- val riviN = a.split(" ")
- if (riviN.size == 2) {
- val speksit = this.haeNomini("http://en.wiktionary.org" + riviN(1))
- var string = ""
- speksit._1 match {
- case "substantiivi" => string += "S:"
- case "adjektiivi" => string += "A:"
- case "pronomini" => string += "P:"
- case "erisnimi" => string += "EN:"
- case "numeraali" => string += "N:"
- case _ => string += "M:"
- }
- string += riviN(0)
- if (speksit._2) string += ",K" else string += ",E"
- if (speksit._3) string += ",Y" else string += ",N"
- //println(string)
- ptiedosto.println(string)
- }
- }
- } finally {
- ptiedosto.close()
- }
- }
- def haeNomini(sananUrl: String) = {
- var sanaluokka: Option[String] = None
- var astevaihtelu = true
- var yhdys = false
- val osoitteenXML = XML.load(sananUrl).mkString.toLowerCase()
- if (osoitteenXML.contains("finnish nouns")) {
- sanaluokka = Some("substantiivi")
- } else if (osoitteenXML.contains("finnish adjectives")) {
- sanaluokka = Some("adjektiivi")
- } else if (osoitteenXML.contains("finnish pronouns")) {
- sanaluokka = Some("pronomini")
- } else if (osoitteenXML.contains("finnish proper nouns")) {
- sanaluokka = Some("erisnimi")
- } else if (osoitteenXML.contains("finnish numerals")) {
- sanaluokka = Some("numeraali")
- } else {
- sanaluokka = Some("muu")
- }
- if (osoitteenXML.contains("no gradation")) {
- astevaihtelu = false
- }
- if (osoitteenXML.contains("finnish compound words")) {
- yhdys = true
- }
- (sanaluokka.get,astevaihtelu,yhdys)
- }
- def siisti(luku: String, kirjoitus: String) = { // siistii formaatin järkevämmäksi
- val tiedosto = Source.fromFile(luku)
- val rivit = tiedosto.getLines().toVector
- val ptiedosto = new PrintWriter(kirjoitus)
- try {
- for (a <- rivit) {
- val eroteltu = a.split(":") //sanaluokka - astevaihtelu/ei astevaihtelua - yhdyssana/normaali
- if (eroteltu.size>0) {
- if (eroteltu(0)=="EN") eroteltu(0) = "E"
- }
- println("kaljaa")
- if (eroteltu.size==2) {
- val eroteltu2 = eroteltu(1).split(",")
- ptiedosto.println(eroteltu2(0)+":"+eroteltu(0)+eroteltu2(1)+eroteltu2(2))
- }
- }
- } finally {
- ptiedosto.close()
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement