-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathFetchPatternAnnotations2.scala
More file actions
89 lines (70 loc) · 2.95 KB
/
FetchPatternAnnotations2.scala
File metadata and controls
89 lines (70 loc) · 2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package example
import scala.collection.mutable._
import scala.io.Source
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.io._
import com.readr.model.annotation._
import com.readr.model.Offsets
import com.readr.model.annotation.Annotations
import com.readr.client.util.AnnotationSequenceFileReader
import com.readr.client.Client
import com.readr.model.Project
import com.readr.client.meaning.frames
import com.readr.model.frame.Frame
import com.typesafe.config.ConfigFactory
import com.readr.client.meaning.frames
import com.readr.client.meaning.frameValences
import com.readr.model.annotation.AnnotationConfirmationType
import com.readr.model.annotation.AnnotatedSentence
import com.readr.model.annotation.FrameMatchFeature
import java.io.File
import java.io.BufferedWriter
import java.io.OutputStreamWriter
import java.io.FileOutputStream
object FetchPatternAnnotations2 extends Settings {
def main(args:Array[String]) = {
implicit val p = Project(ns, proj)
// store annotations in local file
val outDir = tmpDir + "/test"
if (new File(outDir).exists) {
println("/tmp/test already exists, you must delete that first")
System.exit(1)
}
new File(outDir).mkdirs
val f = new File(outDir + "/annotations")
Client.open(host, user, password)
val frameID = frames.idByName("frame2")
if (frameID == -1)
println("Frame not found")
val frameCounts = frameValences.findMatches(frameID)
println("totalMatches = " + frameCounts.totalMatches)
println("confirmedMatches = " + frameCounts.confirmedMatches)
println("...")
val writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f), "utf-8"))
var offset = 0
var hasMore = true
while (hasMore) {
val prs = frameValences.sentences(AnnotationConfirmationType.AllAnnotations, frameID, offset, 1000)
if (prs.list.isEmpty)
println("No annotations.")
for (as:AnnotatedSentence <- prs.list) {
val ann = as.annotations
val textAnn = ann(0).asInstanceOf[TextAnn]
val tokenOffsetAnn = ann(1).asInstanceOf[TokenOffsetAnn]
val sentenceOffsetAnn = ann(2).asInstanceOf[SentenceOffsetAnn]
val sentenceTokenOffsetAnn = ann(3).asInstanceOf[SentenceTokenOffsetAnn]
val framePatterns = ann(4).asInstanceOf[FrameMatchFeatureAnn]
val frameManual = ann(5).asInstanceOf[FrameMatchFeatureAnn]
val sto = sentenceTokenOffsetAnn.sents(0).f
writer.write("// " + textAnn.text + "\n")
writer.write("doc " + as.documentID + ", sentNum " + as.sentNum + ", sentenceTokenOffset " + sto + ", truth " + frameManual.features(0).truth + "\n")
for (arg <- frameManual.features(0).args)
writer.write("arg " + arg.argNum + ": " + (arg.pos - sto) + "\n")
}
hasMore = prs.hasMore
offset = offset + prs.list.size
}
writer.close
Client.close
}
}