app2.ddlog 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565
  1. @source
  2. articles(
  3. @key
  4. @distributed_by
  5. id text,
  6. @searchable
  7. content text
  8. ).
  9. #articles(
  10. # @key
  11. # id text,
  12. # content text
  13. #).
  14. #
  15. #function articles over(
  16. # doc_id text,
  17. # content text
  18. #) returns rows like articles
  19. # implementation "udf/articles.py" handles tsv lines.
  20. #
  21. #articles += articles(doc_id,content):-
  22. # articles(doc_id,content).
  23. @source
  24. sentences(
  25. @key
  26. @distributed_by
  27. doc_id text,
  28. @key
  29. sentence_index int,
  30. @searchable
  31. sentence_text text,
  32. tokens text[],
  33. lemmas text[],
  34. pos_tags text[],
  35. ner_tags text[],
  36. doc_offsets int[],
  37. dep_types text[],
  38. dep_tokens int[]
  39. ).
  40. function nlp_markup over (
  41. doc_id text,
  42. content text
  43. ) returns rows like sentences
  44. implementation "udf/nlp_markup_with_foolnltk.py" handles tsv lines.
  45. sentences += nlp_markup(doc_id, content) :-
  46. articles(doc_id, content).
  47. entity_mention(
  48. entity_id text,
  49. entity_text text,
  50. entity_type text,
  51. doc_id text,
  52. sentence_index int,
  53. begin_index int,
  54. end_index int
  55. ).
  56. function map_entity_mention over(
  57. doc_id text,
  58. sentence_index int,
  59. tokens text[],
  60. ner_tags text[]
  61. )returns rows like entity_mention
  62. implementation "udf/map_entity_mention.py" handles tsv lines.
  63. entity_mention += map_entity_mention(
  64. doc_id,sentence_index,tokens,ner_tags):-
  65. sentences(doc_id,sentence_index,_,tokens,_,_,ner_tags,_,_,_).
  66. relation(
  67. @key
  68. @distributed_by
  69. id text,
  70. name text,
  71. step_host int,
  72. type_host text,
  73. step_guest int,
  74. type_guest text
  75. ).
  76. @source
  77. feature_window(
  78. @key
  79. size int
  80. ).
  81. label_guest_BiddingAgency(
  82. entity_id text,
  83. label int,
  84. rule_id text
  85. ).
  86. function supervise_guest_BiddingAgency over(
  87. entity_id text,entity_begin int,entity_end int,
  88. doc_id text,
  89. sentence_index int,
  90. sentence_text text,
  91. tokens text[],
  92. pos_tags text[],
  93. ner_tags text[]
  94. )returns rows like label_guest_BiddingAgency
  95. implementation "/udf/supervise_guest_BiddingAgency.py" handles tsv lines.
  96. label_guest_BiddingAgency += supervise_guest_BiddingAgency(
  97. entity_id,entity_begin,entity_end,doc_id,sentence_index,sentence_text,tokens,pos_tags,ner_tags
  98. ):-
  99. entity_mention(entity_id,_,guest_type,doc_id,sentence_index,entity_begin,entity_end),
  100. relation(id,_,_,_,_,guest_type),
  101. id = "BiddingAgency",
  102. sentences(doc_id,sentence_index,sentence_text,tokens,_,pos_tags,ner_tags,_,_,_).
  103. label_guest_Tenderer(
  104. entity_id text,
  105. label int,
  106. rule_id text
  107. ).
  108. function supervice_guest_Tenderer over(
  109. entity_id text,entity_begin int,entity_end int,
  110. doc_id text,
  111. sentence_index int,
  112. sentence_text text,
  113. tokens text[],
  114. pos_tags text[],
  115. ner_tags text[]
  116. )returns rows like label_guest_Tenderer
  117. implementation "udf/supervise_guest_Tenderer.py" handles tsv lines.
  118. label_guest_Tenderer+= supervice_guest_Tenderer(
  119. entity_id,entity_begin,entity_end,
  120. doc_id,
  121. sentence_index,
  122. sentence_text,
  123. tokens,
  124. pos_tags,
  125. ner_tags
  126. ):-
  127. sentences(doc_id,sentence_index,sentence_text,tokens,_,pos_tags,ner_tags,_,_,_),
  128. entity_mention(entity_id,_,guest_type,doc_id,sentence_index,entity_begin,entity_end),
  129. relation(id,_,_,_,_,guest_type),
  130. id="Tenderer".
  131. label_guest_SignUpStart(
  132. entity_id text,
  133. label int,
  134. rule_id text
  135. ).
  136. function supervice_guest_SignUpStart over(
  137. entity_id text,entity_begin int,entity_end int,
  138. doc_id text,
  139. sentence_index int,
  140. sentence_text text,
  141. tokens text[],
  142. pos_tags text[],
  143. ner_tags text[]
  144. )returns rows like label_guest_SignUpStart
  145. implementation "udf/supervise_guest_SignUpStart.py" handles tsv lines.
  146. label_guest_SignUpStart+= supervice_guest_SignUpStart(
  147. entity_id,entity_begin,entity_end,
  148. doc_id,
  149. sentence_index,
  150. sentence_text,
  151. tokens,
  152. pos_tags,
  153. ner_tags
  154. ):-
  155. sentences(doc_id,sentence_index,sentence_text,tokens,_,pos_tags,ner_tags,_,_,_),
  156. entity_mention(entity_id,_,guest_type,doc_id,sentence_index,entity_begin,entity_end),
  157. relation(id,_,_,_,_,guest_type),
  158. id="SignUpStart".
  159. label_guest_BiddingOT(
  160. entity_id text,
  161. label int,
  162. rule_id text
  163. ).
  164. function supervice_guest_BiddingOT over(
  165. entity_id text,entity_begin int,entity_end int,
  166. doc_id text,
  167. sentence_index int,
  168. sentence_text text,
  169. tokens text[],
  170. pos_tags text[],
  171. ner_tags text[]
  172. )returns rows like label_guest_BiddingOT
  173. implementation "udf/supervise_guest_BiddingOT.py" handles tsv lines.
  174. label_guest_BiddingOT+= supervice_guest_BiddingOT(
  175. entity_id,entity_begin,entity_end,
  176. doc_id,
  177. sentence_index,
  178. sentence_text,
  179. tokens,
  180. pos_tags,
  181. ner_tags
  182. ):-
  183. sentences(doc_id,sentence_index,sentence_text,tokens,_,pos_tags,ner_tags,_,_,_),
  184. entity_mention(entity_id,_,guest_type,doc_id,sentence_index,entity_begin,entity_end),
  185. relation(id,_,_,_,_,guest_type),
  186. id="BiddingOT".
  187. label_guest_SignUpEnd(
  188. entity_id text,
  189. label int,
  190. rule_id text
  191. ).
  192. function supervice_guest_SignUpEnd over(
  193. entity_id text,entity_begin int,entity_end int,
  194. doc_id text,
  195. sentence_index int,
  196. sentence_text text,
  197. tokens text[],
  198. pos_tags text[],
  199. ner_tags text[]
  200. )returns rows like label_guest_SignUpEnd
  201. implementation "udf/supervise_guest_SignUpEnd.py" handles tsv lines.
  202. label_guest_SignUpEnd+= supervice_guest_SignUpEnd(
  203. entity_id,entity_begin,entity_end,
  204. doc_id,
  205. sentence_index,
  206. sentence_text,
  207. tokens,
  208. pos_tags,
  209. ner_tags
  210. ):-
  211. sentences(doc_id,sentence_index,sentence_text,tokens,_,pos_tags,ner_tags,_,_,_),
  212. entity_mention(entity_id,_,guest_type,doc_id,sentence_index,entity_begin,entity_end),
  213. relation(id,_,_,_,_,guest_type),
  214. id="SignUpEnd".
  215. label_guest_WinnerOfBidding(
  216. entity_id text,
  217. label int,
  218. rule_id text
  219. ).
  220. function supervice_guest_WinnerOfBidding over(
  221. entity_id text,entity_begin int,entity_end int,
  222. doc_id text,
  223. sentence_index int,
  224. sentence_text text,
  225. tokens text[],
  226. pos_tags text[],
  227. ner_tags text[]
  228. )returns rows like label_guest_WinnerOfBidding
  229. implementation "udf/supervise_guest_WinnerOfBidding.py" handles tsv lines.
  230. label_guest_WinnerOfBidding += supervice_guest_WinnerOfBidding(
  231. entity_id,entity_begin,entity_end,
  232. doc_id,
  233. sentence_index,
  234. sentence_text,
  235. tokens,
  236. pos_tags,
  237. ner_tags
  238. ):-
  239. sentences(doc_id,sentence_index,sentence_text,tokens,_,pos_tags,ner_tags,_,_,_),
  240. entity_mention(entity_id,_,guest_type,doc_id,sentence_index,entity_begin,entity_end),
  241. relation(id,_,_,_,_,guest_type),
  242. id="WinnerOfBidding".
  243. label_guest_FirstCandidate(
  244. entity_id text,
  245. label int,
  246. rule_id text
  247. ).
  248. function supervice_guest_FirstCandidate over(
  249. entity_id text,entity_begin int,entity_end int,
  250. doc_id text,
  251. sentence_index int,
  252. sentence_text text,
  253. tokens text[],
  254. pos_tags text[],
  255. ner_tags text[]
  256. )returns rows like label_guest_FirstCandidate
  257. implementation "udf/supervise_guest_FirstCandidate.py" handles tsv lines.
  258. label_guest_FirstCandidate += supervice_guest_FirstCandidate(
  259. entity_id,entity_begin,entity_end,
  260. doc_id,
  261. sentence_index,
  262. sentence_text,
  263. tokens,
  264. pos_tags,
  265. ner_tags
  266. ):-
  267. sentences(doc_id,sentence_index,sentence_text,tokens,_,pos_tags,ner_tags,_,_,_),
  268. entity_mention(entity_id,_,guest_type,doc_id,sentence_index,entity_begin,entity_end),
  269. relation(id,_,_,_,_,guest_type),
  270. id="FirstCandidate".
  271. label_guest_SecondCandidate(
  272. entity_id text,
  273. label int,
  274. rule_id text
  275. ).
  276. function supervice_guest_SecondCandidate over(
  277. entity_id text,entity_begin int,entity_end int,
  278. doc_id text,
  279. sentence_index int,
  280. sentence_text text,
  281. tokens text[],
  282. pos_tags text[],
  283. ner_tags text[]
  284. )returns rows like label_guest_SecondCandidate
  285. implementation "udf/supervise_guest_SecondCandidate.py" handles tsv lines.
  286. label_guest_SecondCandidate += supervice_guest_SecondCandidate(
  287. entity_id,entity_begin,entity_end,
  288. doc_id,
  289. sentence_index,
  290. sentence_text,
  291. tokens,
  292. pos_tags,
  293. ner_tags
  294. ):-
  295. sentences(doc_id,sentence_index,sentence_text,tokens,_,pos_tags,ner_tags,_,_,_),
  296. entity_mention(entity_id,_,guest_type,doc_id,sentence_index,entity_begin,entity_end),
  297. relation(id,_,_,_,_,guest_type),
  298. id="SecondCandidate".
  299. label_guest_ThirdCandidate(
  300. entity_id text,
  301. label int,
  302. rule_id text
  303. ).
  304. function supervice_guest_ThirdCandidate over(
  305. entity_id text,entity_begin int,entity_end int,
  306. doc_id text,
  307. sentence_index int,
  308. sentence_text text,
  309. tokens text[],
  310. pos_tags text[],
  311. ner_tags text[]
  312. )returns rows like label_guest_ThirdCandidate
  313. implementation "udf/supervise_guest_ThirdCandidate.py" handles tsv lines.
  314. label_guest_ThirdCandidate += supervice_guest_ThirdCandidate(
  315. entity_id,entity_begin,entity_end,
  316. doc_id,
  317. sentence_index,
  318. sentence_text,
  319. tokens,
  320. pos_tags,
  321. ner_tags
  322. ):-
  323. sentences(doc_id,sentence_index,sentence_text,tokens,_,pos_tags,ner_tags,_,_,_),
  324. entity_mention(entity_id,_,guest_type,doc_id,sentence_index,entity_begin,entity_end),
  325. relation(id,_,_,_,_,guest_type),
  326. id="ThirdCandidate".
  327. feature_entity(
  328. @key
  329. @references(relation="isBiddingAgency",column="entity_id",alias="isBiddingAgency")
  330. entity_id text,
  331. feature text,
  332. window_size int
  333. ).
  334. function feature_entity over(
  335. entity_id text,
  336. entity_begin int,
  337. entity_end int,
  338. doc_id text,
  339. sentence_index int,
  340. tokens text[],
  341. pos_tags text[],
  342. ner_tags text[],
  343. window_size int
  344. )returns rows like feature_guest_BiddingAgency
  345. implementation "/udf/feature_entity.py" handles tsv lines.
  346. feature_entity += feature_entity(
  347. entity_id,entity_begin,entity_end,doc_id,sentence_index,tokens,pos_tags,ner_tags,window_size
  348. ):-
  349. entity_mention(entity_id,entity_text,_,doc_id,sentence_index,entity_begin,entity_end),
  350. sentences(doc_id,sentence_index,sentence_text,tokens,_,pos_tags,ner_tags,_,_,_),
  351. feature_window(window_size).
  352. @extraction
  353. is_biddingagency?(
  354. @key
  355. @references(relation="entity_mention",column="entity_id",alias="entity_mention")
  356. entity_id text
  357. ).
  358. is_biddingagency(entity_id) = if label>0 then TRUE else if label<0 then FALSE else NULL end:-
  359. label_guest_BiddingAgency(entity_id,label,_).
  360. @weight(f_BiddingAgency)
  361. is_biddingagency(entity_id):-
  362. feature_entity(entity_id,f_BiddingAgency,window),
  363. label_guest_BiddingAgency(entity_id,_,_),
  364. window=10.
  365. @extraction
  366. is_winnerofbidding?(
  367. @key
  368. @references(relation="entity_mention",column="entity_id",alias="entity_mention")
  369. entity_id text
  370. ).
  371. is_winnerofbidding(entity_id) = if label>0 then TRUE else if label<0 then FALSE else NULL end:-
  372. label_guest_WinnerOfBidding(entity_id,label,_).
  373. @weight(f_WinnerOfBidding)
  374. is_winnerofbidding(entity_id):-
  375. feature_entity(entity_id,f_WinnerOfBidding,window),
  376. label_guest_WinnerOfBidding(entity_id,_,_),
  377. window=10.
  378. candidate_entity_pair(
  379. p1_id text,
  380. p1_name text,
  381. p2_id text,
  382. p2_name text
  383. ).
  384. num_entity(doc_id,sentence_index,COUNT(p)):-
  385. entity_mention(p,_,_,doc_id,sentence_index,_,_).
  386. function map_candidate_entity_pair over(
  387. entity1_id text,
  388. entity1_name text,
  389. entity2_id text,
  390. entity2_name text
  391. )returns rows like candidate_entity_pair
  392. implementation "udf/map_candidate_entity_pair.py" handles tsv lines.
  393. candidate_entity_pair += map_candidate_entity_pair(entity1,entity1_name,entity2,entity2_name):-
  394. num_entity(same_doc,same_sentence,num_p),
  395. entity_mention(entity1,entity1_name,_,same_doc,same_sentence,entity1_begin,_),
  396. entity_mention(entity2,entity2_name,_,same_doc,same_sentence,entity2_begin,_),
  397. num_p<5,
  398. entity1!=entity2,
  399. entity1_name!=entity2_name,
  400. entity1_begin!=entity2_begin.
  401. feature_entity_pair(
  402. @key
  403. @references(relation="has_entrust",column="entity1_id",alias="has_entrust")
  404. entity1_id text,
  405. @key
  406. @references(relation="has_entrust",column="entity2_id",alias="has_entrust")
  407. entity2_id text,
  408. feature text,
  409. window_size int
  410. ).
  411. function feature_entity_pair over(
  412. entity1_id text,
  413. entity2_id text,
  414. entity1_begin_index text,
  415. entity1_end_index text,
  416. entity2_begin_index text,
  417. entity2_end_index text,
  418. doc_id text,
  419. sentence_index int,
  420. tokens text[],
  421. lemmas text[],
  422. pos_tags text[],
  423. ner_tags text[],
  424. dep_types text[],
  425. dep_tokens text[],
  426. window_size int
  427. )returns rows like feature_entity_pair
  428. implementation "udf/feature_entity_pair.py" handles tsv lines.
  429. feature_entity_pair += feature_entity_pair(
  430. entity1_id,entity2_id,entity1_begin_index,entity1_end_index,entity2_begin_index,entity2_end_index,
  431. doc_id,sentence_index,tokens,lemmas,pos_tags,ner_tags,dep_types,dep_tokens,window_size):-
  432. sentences(doc_id,sentence_index,_,tokens,lemmas,pos_tags,ner_tags,_,dep_types,dep_tokens),
  433. entity_mention(entity1_id,_,_,doc_id,sentence_index,entity1_begin_index,entity1_end_index),
  434. entity_mention(entity2_id,_,_,doc_id,sentence_index,entity2_begin_index,entity2_end_index),
  435. entity1_id!=entity2_id,
  436. feature_window(window_size),
  437. window_size=10.
  438. @extraction
  439. label_entrust(
  440. @key
  441. @references(relation="has_entrust",column="entity1_id",alias="has_entrust")
  442. entity1_id text,
  443. @key
  444. @references(relation="has_entrust",column="entity2_id",alias="has_entrust")
  445. entity2_id text,
  446. @navigable
  447. label int,
  448. @navigable
  449. rule_id text
  450. ).
  451. label_entrust(entity1_id,entity2_id,0,NULL):-candidate_entity_pair(entity1_id,_,entity2_id,_).
  452. function supervise_entrust over(
  453. entity1_id text, entity1_begin int, entity1_end int,
  454. entity2_id text, entity2_begin int, entity2_end int,
  455. doc_id text,
  456. sentence_index int,
  457. sentence_text text,
  458. tokens text[],
  459. lemmas text[],
  460. pos_tags text[],
  461. ner_tags text[],
  462. dep_types text[],
  463. dep_tokens int[]
  464. )returns(
  465. entity1_id text,entity2_id text,label int,rult_id text
  466. )
  467. implementation "udf/supervise_entrust.py" handles tsv lines.
  468. label_entrust += supervise_entrust(
  469. entity1_id,entity1_begin,entity1_end,
  470. entity2_id,entity2_begin,entity2_end,
  471. doc_id,sentence_index,sentence_text,
  472. tokens,lemmas,pos_tags,ner_tags,dep_types,dep_tokens
  473. ):-
  474. candidate_entity_pair(entity1_id,_,entity2_id,_),
  475. entity_mention(entity1_id,entity1_name,_,doc_id,sentence_index,entity1_begin,entity1_end),
  476. entity_mention(entity2_id,entity2_name,_,_,_,entity2_begin,entity2_end),
  477. sentences(
  478. doc_id,sentence_index,sentence_text,
  479. tokens,lemmas,pos_tags,ner_tags,_,dep_types,dep_tokens
  480. ).
  481. label_entrust_resolved(entity1_id,entity2_id,SUM(vote)):-label_entrust(entity1_id,entity2_id,vote,rule_id).
  482. @extraction
  483. has_entrust?(
  484. @key
  485. @references(relation="entity_mention", column="entity_id", alias="entity_mention")
  486. entity1_id text,
  487. @key
  488. @references(relation="entity_mention", column="entity_id", alias="entity_mention")
  489. entity2_id text
  490. ).
  491. has_entrust(entity1_id,entity2_id) = if label>0 then TRUE else if label<0 then FALSE else NULL end :-
  492. label_entrust_resolved(entity1_id,entity2_id,label).
  493. @weight(f)
  494. has_entrust(entity1_id,entity2_id):-
  495. feature_entity_pair(entity1_id,entity2_id,f,window),
  496. window=10.