participle.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. const $ = require("jquery");
  2. require("babel-polyfill");
  3. require("./../css/participle.less");
  4. require("./../css/common.css");
  5. const { post, api } = require('./api.js');
  6. require('./../resources/images/empty2.png');
  7. const {currentIIData} = require('./data.js')
  8. const initData = currentIIData[14]
  9. for(let i = 0; i < 3; i++){
  10. let str = `<span class="example" id="example${i+1}" data-index=${i}>示例${i+1}</span>`
  11. $('.btnBox').append(str)
  12. }
  13. $('.example').click(function(){
  14. const index = $(this).attr('data-index')
  15. $('#infoTxt').val(currentIIData[index])
  16. getEntityPredict();
  17. })
  18. $('#infoTxt').val(initData)
  19. getEntityPredict();
  20. function insertStr(soure, start, newStr){
  21. return soure.slice(0, start) + newStr + soure.slice(start);
  22. }
  23. function getEntityPredict(){
  24. const val = $('#infoTxt').val()
  25. const param ={
  26. data:[
  27. {"medical_text_type": "chief_present",
  28. "content": val,
  29. "title": "自定义添加的属性",
  30. "detail_title": "自定义添加的属性"
  31. }
  32. ]
  33. }
  34. post(api.entity_predict, param).then(res =>{
  35. if(res.data.code == '0'){
  36. const data = JSON.parse(res.data.data)
  37. const result = data.data[0].entity_relation_object
  38. const entryList = result.outputs.annotation['T']
  39. const relationList = result.outputs.annotation['R']
  40. let content = result.content
  41. getSchema(content,entryList)
  42. getRelationList(relationList,entryList)
  43. }
  44. })
  45. }
  46. function getSchema(content, entryList){
  47. let addNum = 0
  48. for(let i = 1; i < entryList.length; i++){
  49. content = insertStr(content, entryList[i].start+addNum, `<span class="star">* </span><span class="entryItem"><span class="type"><span class="trangle"></span>${entryList[i].name}</span>`)
  50. addNum += 107 + entryList[i].name.length
  51. if(i < entryList.length-1&&(entryList[i].end ===entryList[i+1].start)){
  52. content = insertStr(content, entryList[i].end+addNum, '</span>')
  53. addNum += 7
  54. } else{
  55. content = insertStr(content, entryList[i].end+addNum, '</span><span class="star">*</span>')
  56. addNum += 34
  57. }
  58. }
  59. $('.resultBoxInfo').html(content)
  60. }
  61. function getRelationList(relationList,entryList){
  62. let str = ''
  63. for(let i = 1; i < relationList.length; i++){
  64. const relationItem = relationList[i]
  65. const relationName = relationList[i].name
  66. const entry1 = entryList.find(item => item.id === relationList[i].from).value
  67. const entry2 = entryList.find(item => item.id === relationList[i].to).value
  68. str += `<tr>
  69. <td class="entry1">${entry1}</td>
  70. <td class="relationType">${relationName}</td>
  71. <td class="entry2">${entry2}</td>
  72. </tr>`
  73. }
  74. if(str){
  75. $('.empty').css("display","none");
  76. $('table').css("display","table")
  77. }
  78. $('.relationBody').html(str)
  79. }
  80. $("#analy").click(function(){
  81. const val = $("#infoTxt").val().trim()
  82. if(val){
  83. getEntityPredict()
  84. }
  85. })
  86. $("#infoTxt").bind("input propertychange",function(event){
  87. const val = $("#infoTxt").val().trim()
  88. if(!val){
  89. $('#analy').addClass('disabled')
  90. $('.resultBoxInfo').html('')
  91. $('.empty').css("display","block");
  92. $('table').css("display","none")
  93. }else{
  94. $('#analy').removeClass('disabled')
  95. }
  96. });