api-config.json 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. {
  2. "name": "review-keyword-cloud",
  3. "displayName": "评论关键词云",
  4. "description": "从评论语料生成关键词云,结合ASIN反查关键词,每个关键词带情感标签,构建VOC关键词库",
  5. "category": "review-analysis",
  6. "version": "1.3.0",
  7. "type": "orchestration",
  8. "parameters": {
  9. "reviewCorpus": {
  10. "type": "object",
  11. "required": true,
  12. "description": "review-batch-collection 输出的评论语料"
  13. },
  14. "asins": {
  15. "type": "array",
  16. "items": { "type": "string" },
  17. "required": false,
  18. "description": "ASIN列表,用于调用反查关键词补充"
  19. },
  20. "domain": {
  21. "type": "integer",
  22. "required": false,
  23. "default": 1,
  24. "description": "Amazon站点"
  25. },
  26. "topN": {
  27. "type": "integer",
  28. "required": false,
  29. "default": 50,
  30. "description": "返回Top N关键词"
  31. },
  32. "language": {
  33. "type": "string",
  34. "required": false,
  35. "default": "en",
  36. "description": "语言"
  37. }
  38. },
  39. "pipeline": [
  40. {
  41. "step": 1,
  42. "name": "评论文本分词+高频短语提取",
  43. "type": "compute",
  44. "logic": "tokenizeAndExtract(reviewCorpus)",
  45. "algorithm": {
  46. "tokenize": "分词并去除停用词",
  47. "ngrams": "提取高频单词和短语(1-gram, 2-gram, 3-gram)",
  48. "frequency": "统计词频"
  49. },
  50. "output": "reviewKeywords"
  51. },
  52. {
  53. "step": 2,
  54. "name": "ASIN反查搜索关键词",
  55. "condition": "asins && asins.length > 0",
  56. "forEach": "asins",
  57. "api": {
  58. "service": "SorftimeApiService.getAsinKeywords",
  59. "endpoint": "/api/ASINRequestKeyword",
  60. "method": "POST",
  61. "forwardUrl": "https://server.fmode.cn/api/voc-ecom/forward",
  62. "headers": { "Authorization": "Bearer r:858b3ee92314d5447d1fc3cdc10462d7" },
  63. "requestBody": { "ASIN": "${asin}" },
  64. "queryParams": { "domain": "${domain}" }
  65. },
  66. "output": "searchKeywords",
  67. "responseExtract": "Array<{ Keyword, KeywordCNName, SearchVolume, SearchRank }>"
  68. },
  69. {
  70. "step": 3,
  71. "name": "合并关键词+情感标注",
  72. "type": "compute",
  73. "logic": "mergeAndAnnotate(reviewKeywords, searchKeywords, topN)",
  74. "algorithm": {
  75. "merge": "合并评论关键词和搜索关键词",
  76. "source": "标注来源(review/search/both)",
  77. "sentiment": "基于情感词典和上下文判断 positive/negative/neutral",
  78. "weight": "按频率/搜索量/关联ASIN数加权排序",
  79. "categorize": "分类: 产品特性/使用场景/购买决策/问题反馈"
  80. },
  81. "output": "keywordCloud"
  82. }
  83. ],
  84. "response": {
  85. "type": "object",
  86. "properties": {
  87. "keywordCloud": {
  88. "type": "array",
  89. "description": "关键词云数据",
  90. "items": {
  91. "type": "object",
  92. "properties": {
  93. "keyword": { "type": "string" },
  94. "weight": { "type": "integer" },
  95. "frequency": { "type": "integer" },
  96. "source": { "type": "string", "enum": ["review", "search", "both"] },
  97. "sentiment": { "type": "string", "enum": ["positive", "negative", "neutral"] },
  98. "searchVolume": { "type": "integer" },
  99. "relatedAsins": { "type": "integer" }
  100. }
  101. }
  102. },
  103. "categories": {
  104. "type": "object",
  105. "description": "关键词分类",
  106. "properties": {
  107. "产品特性": { "type": "array", "items": { "type": "string" } },
  108. "使用场景": { "type": "array", "items": { "type": "string" } },
  109. "购买决策": { "type": "array", "items": { "type": "string" } },
  110. "问题反馈": { "type": "array", "items": { "type": "string" } }
  111. }
  112. },
  113. "searchKeywords": {
  114. "type": "array",
  115. "items": {
  116. "type": "object",
  117. "properties": {
  118. "keyword": { "type": "string" },
  119. "searchVolume": { "type": "integer" },
  120. "rank": { "type": "integer" }
  121. }
  122. }
  123. },
  124. "totalKeywords": { "type": "integer" },
  125. "reviewKeywordsCount": { "type": "integer" },
  126. "searchKeywordsCount": { "type": "integer" },
  127. "overlapKeywords": { "type": "integer" }
  128. }
  129. },
  130. "timeout": 300000,
  131. "retry": {
  132. "maxAttempts": 2,
  133. "delay": 2000,
  134. "backoffMultiplier": 2
  135. }
  136. }