BUILD 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874
  1. # Description:
  2. # A syntactic parser and part-of-speech tagger in TensorFlow.
  3. package(
  4. default_visibility = [
  5. "//visibility:public",
  6. ],
  7. features = ["-layering_check"],
  8. )
  9. licenses(["notice"]) # Apache 2.0
  10. load(
  11. "syntaxnet",
  12. "tf_proto_library",
  13. "tf_proto_library_py",
  14. "tf_gen_op_libs",
  15. "tf_gen_op_wrapper_py",
  16. )
  17. # proto libraries
  18. tf_proto_library(
  19. name = "feature_extractor_proto",
  20. srcs = ["feature_extractor.proto"],
  21. )
  22. tf_proto_library(
  23. name = "sentence_proto",
  24. srcs = ["sentence.proto"],
  25. )
  26. tf_proto_library_py(
  27. name = "sentence_py_pb2",
  28. srcs = ["sentence.proto"],
  29. )
  30. tf_proto_library(
  31. name = "dictionary_proto",
  32. srcs = ["dictionary.proto"],
  33. )
  34. tf_proto_library_py(
  35. name = "dictionary_py_pb2",
  36. srcs = ["dictionary.proto"],
  37. )
  38. tf_proto_library(
  39. name = "kbest_syntax_proto",
  40. srcs = ["kbest_syntax.proto"],
  41. deps = [":sentence_proto"],
  42. )
  43. tf_proto_library(
  44. name = "task_spec_proto",
  45. srcs = ["task_spec.proto"],
  46. )
  47. tf_proto_library_py(
  48. name = "task_spec_py_pb2",
  49. srcs = ["task_spec.proto"],
  50. )
  51. tf_proto_library(
  52. name = "sparse_proto",
  53. srcs = ["sparse.proto"],
  54. )
  55. tf_proto_library_py(
  56. name = "sparse_py_pb2",
  57. srcs = ["sparse.proto"],
  58. )
  59. # cc libraries for feature extraction and parsing
  60. cc_library(
  61. name = "base",
  62. hdrs = ["base.h"],
  63. visibility = ["//visibility:public"],
  64. deps = [
  65. "@com_googlesource_code_re2//:re2",
  66. "@protobuf//:protobuf",
  67. "@org_tensorflow//third_party/eigen3",
  68. ] + select({
  69. "//conditions:default": [
  70. "@org_tensorflow//tensorflow/core:framework",
  71. "@org_tensorflow//tensorflow/core:lib",
  72. ],
  73. "@org_tensorflow//tensorflow:darwin": [
  74. "@org_tensorflow//tensorflow/core:framework_headers_lib",
  75. ],
  76. }),
  77. )
  78. cc_library(
  79. name = "utils",
  80. srcs = ["utils.cc"],
  81. hdrs = [
  82. "utils.h",
  83. ],
  84. deps = [
  85. ":base",
  86. "//util/utf8:unicodetext",
  87. ],
  88. )
  89. cc_library(
  90. name = "test_main",
  91. testonly = 1,
  92. srcs = ["test_main.cc"],
  93. linkopts = ["-lm"],
  94. deps = [
  95. "//external:gtest",
  96. "@org_tensorflow//tensorflow/core:lib",
  97. "@org_tensorflow//tensorflow/core:test",
  98. "@org_tensorflow//tensorflow/core:testlib",
  99. ],
  100. )
  101. cc_library(
  102. name = "document_format",
  103. srcs = ["document_format.cc"],
  104. hdrs = ["document_format.h"],
  105. deps = [
  106. ":registry",
  107. ":sentence_proto",
  108. ":task_context",
  109. ],
  110. )
  111. cc_library(
  112. name = "text_formats",
  113. srcs = ["text_formats.cc"],
  114. deps = [
  115. ":base",
  116. ":document_format",
  117. ":segmenter_utils",
  118. ":sentence_proto",
  119. ],
  120. alwayslink = 1,
  121. )
  122. cc_library(
  123. name = "fml_parser",
  124. srcs = ["fml_parser.cc"],
  125. hdrs = ["fml_parser.h"],
  126. deps = [
  127. ":feature_extractor_proto",
  128. ":utils",
  129. ],
  130. )
  131. cc_library(
  132. name = "proto_io",
  133. hdrs = ["proto_io.h"],
  134. deps = [
  135. ":feature_extractor_proto",
  136. ":fml_parser",
  137. ":sentence_proto",
  138. ":task_context",
  139. ],
  140. )
  141. cc_library(
  142. name = "char_properties",
  143. srcs = ["char_properties.cc"],
  144. hdrs = ["char_properties.h"],
  145. deps = [
  146. ":registry",
  147. ":utils",
  148. "//util/utf8:unicodetext",
  149. ],
  150. alwayslink = 1,
  151. )
  152. cc_library(
  153. name = "char_ngram_string_extractor",
  154. srcs = ["char_ngram_string_extractor.cc"],
  155. hdrs = ["char_ngram_string_extractor.h"],
  156. deps = [
  157. ":segmenter_utils",
  158. ":task_context",
  159. "@org_tensorflow//tensorflow/core:lib",
  160. ],
  161. )
  162. cc_library(
  163. name = "segmenter_utils",
  164. srcs = ["segmenter_utils.cc"],
  165. hdrs = ["segmenter_utils.h"],
  166. deps = [
  167. ":base",
  168. ":char_properties",
  169. ":sentence_proto",
  170. "//util/utf8:unicodetext",
  171. ],
  172. alwayslink = 1,
  173. )
  174. cc_library(
  175. name = "feature_extractor",
  176. srcs = ["feature_extractor.cc"],
  177. hdrs = [
  178. "feature_extractor.h",
  179. "feature_types.h",
  180. ],
  181. deps = [
  182. ":document_format",
  183. ":feature_extractor_proto",
  184. ":proto_io",
  185. ":sentence_proto",
  186. ":task_context",
  187. ":utils",
  188. ":workspace",
  189. ],
  190. )
  191. cc_library(
  192. name = "affix",
  193. srcs = ["affix.cc"],
  194. hdrs = ["affix.h"],
  195. deps = [
  196. ":dictionary_proto",
  197. ":feature_extractor",
  198. ":sentence_proto",
  199. ":shared_store",
  200. ":term_frequency_map",
  201. ":utils",
  202. ":workspace",
  203. ],
  204. )
  205. cc_library(
  206. name = "sentence_features",
  207. srcs = ["sentence_features.cc"],
  208. hdrs = ["sentence_features.h"],
  209. deps = [
  210. ":affix",
  211. ":char_ngram_string_extractor",
  212. ":char_properties",
  213. ":feature_extractor",
  214. ":registry",
  215. ":segmenter_utils",
  216. ":shared_store",
  217. ":task_context",
  218. ":workspace",
  219. "//util/utf8:unicodetext",
  220. ],
  221. alwayslink = 1,
  222. )
  223. cc_library(
  224. name = "whole_sentence_features",
  225. srcs = ["whole_sentence_features.cc"],
  226. hdrs = ["whole_sentence_features.h"],
  227. deps = [
  228. ":base",
  229. ":feature_extractor",
  230. ":registry",
  231. ":task_context",
  232. ":workspace",
  233. ],
  234. alwayslink = 1,
  235. )
  236. cc_library(
  237. name = "shared_store",
  238. srcs = ["shared_store.cc"],
  239. hdrs = ["shared_store.h"],
  240. deps = [
  241. ":utils",
  242. ],
  243. )
  244. cc_library(
  245. name = "registry",
  246. srcs = ["registry.cc"],
  247. hdrs = ["registry.h"],
  248. deps = [
  249. ":utils",
  250. ],
  251. )
  252. cc_library(
  253. name = "workspace",
  254. srcs = ["workspace.cc"],
  255. hdrs = ["workspace.h"],
  256. deps = [
  257. ":utils",
  258. ],
  259. )
  260. cc_library(
  261. name = "task_context",
  262. srcs = ["task_context.cc"],
  263. hdrs = ["task_context.h"],
  264. deps = [
  265. ":task_spec_proto",
  266. ":utils",
  267. ],
  268. )
  269. cc_library(
  270. name = "term_frequency_map",
  271. srcs = ["term_frequency_map.cc"],
  272. hdrs = ["term_frequency_map.h"],
  273. visibility = ["//visibility:public"],
  274. deps = [
  275. ":utils",
  276. ],
  277. alwayslink = 1,
  278. )
  279. cc_library(
  280. name = "morphology_label_set",
  281. srcs = ["morphology_label_set.cc"],
  282. hdrs = ["morphology_label_set.h"],
  283. deps = [
  284. ":document_format",
  285. ":feature_extractor",
  286. ":proto_io",
  287. ":registry",
  288. ":sentence_proto",
  289. ":utils",
  290. ],
  291. )
  292. cc_library(
  293. name = "parser_transitions",
  294. srcs = [
  295. "arc_standard_transitions.cc",
  296. "binary_segment_state.cc",
  297. "binary_segment_transitions.cc",
  298. "char_shift_transitions.cc",
  299. "head_transitions.cc",
  300. "head_transitions.h",
  301. "label_transitions.cc",
  302. "label_transitions.h",
  303. "morpher_transitions.cc",
  304. "once_transitions.cc",
  305. "parser_features.cc",
  306. "parser_state.cc",
  307. "parser_transitions.cc",
  308. "shift_transitions.cc",
  309. "tagger_transitions.cc",
  310. ],
  311. hdrs = [
  312. "binary_segment_state.h",
  313. "char_shift_transitions.h",
  314. "parser_features.h",
  315. "parser_state.h",
  316. "parser_transitions.h",
  317. ],
  318. deps = [
  319. ":base",
  320. ":feature_extractor",
  321. ":morphology_label_set",
  322. ":registry",
  323. ":segmenter_utils",
  324. ":sentence_features",
  325. ":sentence_proto",
  326. ":shared_store",
  327. ":task_context",
  328. ":term_frequency_map",
  329. ":utils",
  330. ":whole_sentence_features",
  331. ":workspace",
  332. "@org_tensorflow//tensorflow/core:lib",
  333. ],
  334. alwayslink = 1,
  335. )
  336. cc_library(
  337. name = "populate_test_inputs",
  338. testonly = 1,
  339. srcs = ["populate_test_inputs.cc"],
  340. hdrs = ["populate_test_inputs.h"],
  341. deps = [
  342. ":dictionary_proto",
  343. ":sentence_proto",
  344. ":task_context",
  345. ":task_spec_proto",
  346. ":term_frequency_map",
  347. ":test_main",
  348. ],
  349. )
  350. cc_library(
  351. name = "embedding_feature_extractor",
  352. srcs = ["embedding_feature_extractor.cc"],
  353. hdrs = ["embedding_feature_extractor.h"],
  354. deps = [
  355. ":feature_extractor",
  356. ":parser_transitions",
  357. ":sentence_features",
  358. ":sparse_proto",
  359. ":task_context",
  360. ":utils",
  361. ":workspace",
  362. "@org_tensorflow//tensorflow/core:lib",
  363. ],
  364. )
  365. cc_library(
  366. name = "sentence_batch",
  367. srcs = ["sentence_batch.cc"],
  368. hdrs = ["sentence_batch.h"],
  369. deps = [
  370. ":embedding_feature_extractor",
  371. ":feature_extractor",
  372. ":parser_transitions",
  373. ":sentence_proto",
  374. ":sparse_proto",
  375. ":task_context",
  376. ":task_spec_proto",
  377. ":term_frequency_map",
  378. ":workspace",
  379. ],
  380. )
  381. cc_library(
  382. name = "reader_ops",
  383. srcs = [
  384. "beam_reader_ops.cc",
  385. "reader_ops.cc",
  386. ],
  387. deps = [
  388. ":parser_transitions",
  389. ":sentence_batch",
  390. ":sentence_proto",
  391. ":sparse_proto",
  392. ":task_context",
  393. ":task_spec_proto",
  394. ],
  395. alwayslink = 1,
  396. )
  397. cc_library(
  398. name = "document_filters",
  399. srcs = ["document_filters.cc"],
  400. deps = [
  401. ":document_format",
  402. ":parser_transitions",
  403. ":segmenter_utils",
  404. ":sentence_batch",
  405. ":sentence_proto",
  406. ":task_context",
  407. ":text_formats",
  408. ],
  409. alwayslink = 1,
  410. )
  411. cc_library(
  412. name = "lexicon_builder",
  413. srcs = ["lexicon_builder.cc"],
  414. deps = [
  415. ":affix",
  416. ":char_ngram_string_extractor",
  417. ":feature_extractor",
  418. ":parser_transitions",
  419. ":segmenter_utils",
  420. ":sentence_batch",
  421. ":sentence_proto",
  422. ":term_frequency_map",
  423. ":text_formats",
  424. ":utils",
  425. "@org_tensorflow//tensorflow/core:framework",
  426. "@org_tensorflow//tensorflow/core:lib",
  427. ],
  428. alwayslink = 1,
  429. )
  430. cc_library(
  431. name = "unpack_sparse_features",
  432. srcs = ["unpack_sparse_features.cc"],
  433. deps = [
  434. ":sparse_proto",
  435. ":utils",
  436. ],
  437. alwayslink = 1,
  438. )
  439. cc_library(
  440. name = "parser_ops_cc",
  441. srcs = ["ops/parser_ops.cc"],
  442. deps = [
  443. ":document_filters",
  444. ":lexicon_builder",
  445. ":reader_ops",
  446. ":unpack_sparse_features",
  447. "@org_tensorflow//tensorflow/core:framework",
  448. ],
  449. alwayslink = 1,
  450. )
  451. cc_binary(
  452. name = "parser_ops.so",
  453. linkopts = select({
  454. "//conditions:default": ["-lm"],
  455. "@org_tensorflow//tensorflow:darwin": [],
  456. }),
  457. linkshared = 1,
  458. linkstatic = 1,
  459. deps = [
  460. ":parser_ops_cc",
  461. ],
  462. )
  463. # cc tests
  464. filegroup(
  465. name = "testdata",
  466. srcs = [
  467. "testdata/context.pbtxt",
  468. "testdata/document",
  469. "testdata/mini-training-set",
  470. ],
  471. )
  472. filegroup(
  473. name = "parsey_data",
  474. srcs = glob(["models/parsey_mcparseface/*"]),
  475. )
  476. cc_test(
  477. name = "binary_segment_state_test",
  478. size = "small",
  479. srcs = ["binary_segment_state_test.cc"],
  480. deps = [
  481. ":base",
  482. ":parser_transitions",
  483. ":term_frequency_map",
  484. ":test_main",
  485. ],
  486. )
  487. cc_test(
  488. name = "shared_store_test",
  489. size = "small",
  490. srcs = ["shared_store_test.cc"],
  491. deps = [
  492. ":shared_store",
  493. ":test_main",
  494. ],
  495. )
  496. cc_test(
  497. name = "char_properties_test",
  498. srcs = ["char_properties_test.cc"],
  499. deps = [
  500. ":char_properties",
  501. ":test_main",
  502. ],
  503. )
  504. cc_test(
  505. name = "char_ngram_string_extractor_test",
  506. srcs = ["char_ngram_string_extractor_test.cc"],
  507. deps = [
  508. ":char_ngram_string_extractor",
  509. ":task_context",
  510. ":test_main",
  511. "@org_tensorflow//tensorflow/core:test",
  512. ],
  513. )
  514. cc_test(
  515. name = "segmenter_utils_test",
  516. srcs = ["segmenter_utils_test.cc"],
  517. deps = [
  518. ":base",
  519. ":segmenter_utils",
  520. ":sentence_proto",
  521. ":test_main",
  522. ],
  523. )
  524. cc_test(
  525. name = "sentence_features_test",
  526. size = "medium",
  527. srcs = ["sentence_features_test.cc"],
  528. deps = [
  529. ":feature_extractor",
  530. ":populate_test_inputs",
  531. ":sentence_features",
  532. ":sentence_proto",
  533. ":task_context",
  534. ":task_spec_proto",
  535. ":term_frequency_map",
  536. ":test_main",
  537. ":utils",
  538. ":workspace",
  539. ],
  540. )
  541. cc_test(
  542. name = "whole_sentence_features_test",
  543. size = "medium",
  544. srcs = ["whole_sentence_features_test.cc"],
  545. deps = [
  546. ":feature_extractor",
  547. ":parser_transitions",
  548. ":sentence_proto",
  549. ":task_context",
  550. ":term_frequency_map",
  551. ":test_main",
  552. ":whole_sentence_features",
  553. ":workspace",
  554. ],
  555. )
  556. cc_test(
  557. name = "morphology_label_set_test",
  558. srcs = ["morphology_label_set_test.cc"],
  559. deps = [
  560. ":morphology_label_set",
  561. ":test_main",
  562. ],
  563. )
  564. cc_test(
  565. name = "arc_standard_transitions_test",
  566. size = "small",
  567. srcs = ["arc_standard_transitions_test.cc"],
  568. data = [":testdata"],
  569. deps = [
  570. ":parser_transitions",
  571. ":populate_test_inputs",
  572. ":sentence_proto",
  573. ":task_spec_proto",
  574. ":test_main",
  575. ],
  576. )
  577. cc_test(
  578. name = "char_shift_transitions_test",
  579. size = "small",
  580. srcs = ["char_shift_transitions_test.cc"],
  581. data = [":testdata"],
  582. deps = [
  583. ":parser_transitions",
  584. ":populate_test_inputs",
  585. ":sentence_proto",
  586. ":task_spec_proto",
  587. ":test_main",
  588. ],
  589. )
  590. cc_test(
  591. name = "binary_segment_transitions_test",
  592. size = "small",
  593. srcs = ["binary_segment_transitions_test.cc"],
  594. deps = [
  595. ":parser_transitions",
  596. ":sentence_proto",
  597. ":task_context",
  598. ":test_main",
  599. ":workspace",
  600. ],
  601. )
  602. cc_test(
  603. name = "tagger_transitions_test",
  604. size = "small",
  605. srcs = ["tagger_transitions_test.cc"],
  606. data = [":testdata"],
  607. deps = [
  608. ":parser_transitions",
  609. ":populate_test_inputs",
  610. ":sentence_proto",
  611. ":task_spec_proto",
  612. ":test_main",
  613. ],
  614. )
  615. cc_test(
  616. name = "once_transitions_test",
  617. size = "small",
  618. srcs = ["once_transitions_test.cc"],
  619. deps = [
  620. ":base",
  621. ":parser_transitions",
  622. ":sentence_proto",
  623. ":task_context",
  624. ":term_frequency_map",
  625. ":test_main",
  626. ],
  627. )
  628. cc_test(
  629. name = "head_transitions_test",
  630. size = "small",
  631. srcs = ["head_transitions_test.cc"],
  632. deps = [
  633. ":base",
  634. ":parser_transitions",
  635. ":sentence_proto",
  636. ":task_context",
  637. ":term_frequency_map",
  638. ":test_main",
  639. ],
  640. )
  641. cc_test(
  642. name = "label_transitions_test",
  643. size = "small",
  644. srcs = ["label_transitions_test.cc"],
  645. deps = [
  646. ":base",
  647. ":parser_transitions",
  648. ":sentence_proto",
  649. ":task_context",
  650. ":term_frequency_map",
  651. ":test_main",
  652. ],
  653. )
  654. cc_test(
  655. name = "parser_features_test",
  656. size = "small",
  657. srcs = ["parser_features_test.cc"],
  658. deps = [
  659. ":feature_extractor",
  660. ":parser_transitions",
  661. ":populate_test_inputs",
  662. ":sentence_proto",
  663. ":task_context",
  664. ":task_spec_proto",
  665. ":term_frequency_map",
  666. ":test_main",
  667. ":workspace",
  668. ],
  669. )
  670. # py graph builder and trainer
  671. tf_gen_op_libs(
  672. op_lib_names = ["parser_ops"],
  673. )
  674. tf_gen_op_wrapper_py(
  675. name = "parser_ops",
  676. deps = [":parser_ops_op_lib"],
  677. )
  678. py_library(
  679. name = "load_parser_ops_py",
  680. srcs = ["load_parser_ops.py"],
  681. data = [":parser_ops.so"],
  682. )
  683. py_library(
  684. name = "graph_builder",
  685. srcs = ["graph_builder.py"],
  686. deps = [
  687. ":load_parser_ops_py",
  688. ":parser_ops",
  689. "@org_tensorflow//tensorflow:tensorflow_py",
  690. "@org_tensorflow//tensorflow/core:protos_all_py",
  691. ],
  692. )
  693. py_library(
  694. name = "structured_graph_builder",
  695. srcs = ["structured_graph_builder.py"],
  696. deps = [
  697. ":graph_builder",
  698. ],
  699. )
  700. py_binary(
  701. name = "parser_trainer",
  702. srcs = ["parser_trainer.py"],
  703. deps = [
  704. ":graph_builder",
  705. ":structured_graph_builder",
  706. ":task_spec_py_pb2",
  707. ],
  708. )
  709. py_binary(
  710. name = "parser_eval",
  711. srcs = ["parser_eval.py"],
  712. deps = [
  713. ":graph_builder",
  714. ":sentence_py_pb2",
  715. ":structured_graph_builder",
  716. ":task_spec_py_pb2",
  717. ],
  718. )
  719. py_binary(
  720. name = "conll2tree",
  721. srcs = ["conll2tree.py"],
  722. deps = [
  723. ":graph_builder",
  724. ":sentence_py_pb2",
  725. ],
  726. )
  727. # py tests
  728. py_test(
  729. name = "lexicon_builder_test",
  730. size = "small",
  731. srcs = ["lexicon_builder_test.py"],
  732. deps = [
  733. ":graph_builder",
  734. ":sentence_py_pb2",
  735. ":task_spec_py_pb2",
  736. ],
  737. )
  738. py_test(
  739. name = "text_formats_test",
  740. size = "small",
  741. srcs = ["text_formats_test.py"],
  742. deps = [
  743. ":graph_builder",
  744. ":sentence_py_pb2",
  745. ":task_spec_py_pb2",
  746. ],
  747. )
  748. py_test(
  749. name = "reader_ops_test",
  750. size = "medium",
  751. srcs = ["reader_ops_test.py"],
  752. data = [":testdata"],
  753. tags = ["notsan"],
  754. deps = [
  755. ":dictionary_py_pb2",
  756. ":graph_builder",
  757. ":sparse_py_pb2",
  758. ],
  759. )
  760. py_test(
  761. name = "beam_reader_ops_test",
  762. size = "medium",
  763. srcs = ["beam_reader_ops_test.py"],
  764. data = [":testdata"],
  765. tags = ["notsan"],
  766. deps = [
  767. ":structured_graph_builder",
  768. ],
  769. )
  770. py_test(
  771. name = "graph_builder_test",
  772. size = "medium",
  773. srcs = ["graph_builder_test.py"],
  774. data = [
  775. ":testdata",
  776. ],
  777. tags = ["notsan"],
  778. deps = [
  779. ":graph_builder",
  780. ":sparse_py_pb2",
  781. ],
  782. )
  783. sh_test(
  784. name = "parser_trainer_test",
  785. size = "large",
  786. srcs = ["parser_trainer_test.sh"],
  787. data = [
  788. ":parser_eval",
  789. ":parser_trainer",
  790. ":testdata",
  791. ],
  792. tags = ["slow"],
  793. )