-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuildAndUseClassifier.py
32 lines (24 loc) · 1.2 KB
/
buildAndUseClassifier.py
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
import kindred
import argparse
import os
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Use annotated sentences to build a Kindred classifer and apply to unannotated sentences')
parser.add_argument('--dataToBuildModel',required=True,type=str,help='Sentences with relations')
parser.add_argument('--dataToApplyModel',required=True,type=str,help='Sentences without annotated relations to make predictions on')
parser.add_argument('--outDir',required=True,type=str,help='Directory to store output')
args = parser.parse_args()
print("Loading corpora...")
trainCorpus = kindred.load('standoff',args.dataToBuildModel)
predictionCorpus = kindred.load('standoff',args.dataToApplyModel)
print("Building classifier...")
classifier = kindred.RelationClassifier(model='pt')
classifier.train(trainCorpus)
print("Applying classifier...")
classifier.predict(predictionCorpus)
if not os.path.isdir(args.outDir):
os.makedirs(args.outDir)
print("Saving results to directory...")
kindred.save(predictionCorpus,'standoff',args.outDir)
print("\nPredicted relations:")
relations = predictionCorpus.getRelations()
print("%s\t%s" % (relations[0].entities[0].text,relations[0].entities[1].text))