debug_component.jsx 427 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955
  1. import React, { useState, useCallback, useMemo, useEffect } from 'react';
  2. import { createRoot } from 'react-dom/client';
  3. import {
  4. ReactFlow,
  5. Controls,
  6. Background,
  7. useNodesState,
  8. useEdgesState,
  9. Handle,
  10. Position,
  11. useReactFlow,
  12. ReactFlowProvider,
  13. } from '@xyflow/react';
  14. import '@xyflow/react/dist/style.css';
  15. const data = {
  16. "nodes": {
  17. "root_o": {
  18. "type": "root",
  19. "query": "如何制作猫咪表情包梗图",
  20. "level": 0,
  21. "relevance_score": 1,
  22. "strategy": "原始问题",
  23. "iteration": 0,
  24. "is_selected": true
  25. },
  26. "round_0": {
  27. "type": "round",
  28. "query": "Round 0 (初始化)",
  29. "level": 0,
  30. "relevance_score": 0,
  31. "strategy": "初始化",
  32. "iteration": 0,
  33. "is_selected": true
  34. },
  35. "step_seg_r0": {
  36. "type": "step",
  37. "query": "步骤1: 分段 (4个segment)",
  38. "level": 1,
  39. "relevance_score": 0,
  40. "strategy": "分段",
  41. "iteration": 0,
  42. "is_selected": true
  43. },
  44. "segment_0_r0": {
  45. "type": "segment",
  46. "query": "[疑问引导] 如何",
  47. "level": 2,
  48. "relevance_score": 0.024,
  49. "evaluationReason": "【评估对象】词条\"如何\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】词条“如何”本身不包含任何动作意图,无法与原始问题的“制作”动作进行匹配。\n【品类维度 0.08】原始问题是关于'制作猫咪表情包梗图'的特定概念,而词条'如何'是过度泛化的通用概念,不包含任何品类信息,因此品类匹配度极低。\n【最终得分 0.02】\n【规则说明】规则B:动机低分限制生效(动机0.00≤0.2),实际得分0.02已≤0.5",
  50. "strategy": "疑问引导",
  51. "iteration": 0,
  52. "is_selected": true,
  53. "segment_type": "疑问引导",
  54. "domain_index": 0,
  55. "domain_type": "疑问引导"
  56. },
  57. "word_如何_seg0_0": {
  58. "type": "word",
  59. "query": "如何",
  60. "level": 3,
  61. "relevance_score": 0.024,
  62. "evaluationReason": "【评估对象】词条\"如何\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】词条“如何”本身不包含任何动作意图,无法与原始问题的“制作”动作进行匹配。\n【品类维度 0.08】原始问题是关于'制作猫咪表情包梗图'的特定概念,而词条'如何'是过度泛化的通用概念,不包含任何品类信息,因此品类匹配度极低。\n【最终得分 0.02】\n【规则说明】规则B:动机低分限制生效(动机0.00≤0.2),实际得分0.02已≤0.5",
  63. "strategy": "Word",
  64. "iteration": 0,
  65. "is_selected": true
  66. },
  67. "segment_1_r0": {
  68. "type": "segment",
  69. "query": "[核心动作] 制作",
  70. "level": 2,
  71. "relevance_score": 0.71,
  72. "evaluationReason": "【评估对象】词条\"制作\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.98】词条“制作”与原始问题“制作”的核心动作完全一致。\n【品类维度 0.08】词条'制作'是一个通用概念,而原始问题'如何制作猫咪表情包梗图'是一个特定概念。通用概念不等于特定概念,因此品类匹配度低。\n【最终得分 0.71】\n【规则说明】规则A:动机高分保护生效(动机0.98≥0.8),实际得分0.71已≥0.7",
  73. "strategy": "核心动作",
  74. "iteration": 0,
  75. "is_selected": true,
  76. "segment_type": "核心动作",
  77. "domain_index": 1,
  78. "domain_type": "核心动作"
  79. },
  80. "word_制作_seg1_0": {
  81. "type": "word",
  82. "query": "制作",
  83. "level": 3,
  84. "relevance_score": 0.71,
  85. "evaluationReason": "【评估对象】词条\"制作\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.98】词条“制作”与原始问题“制作”的核心动作完全一致。\n【品类维度 0.08】词条'制作'是一个通用概念,而原始问题'如何制作猫咪表情包梗图'是一个特定概念。通用概念不等于特定概念,因此品类匹配度低。\n【最终得分 0.71】\n【规则说明】规则A:动机高分保护生效(动机0.98≥0.8),实际得分0.71已≥0.7",
  86. "strategy": "Word",
  87. "iteration": 0,
  88. "is_selected": true
  89. },
  90. "segment_2_r0": {
  91. "type": "segment",
  92. "query": "[修饰短语] 猫咪",
  93. "level": 2,
  94. "relevance_score": 0.09,
  95. "evaluationReason": "【评估对象】词条\"猫咪\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】词条“猫咪”是一个名词,没有明确的动作意图,无法与原始问题的核心动机“制作”进行匹配。\n【品类维度 0.30】原始问题的主体是'猫咪表情包梗图',词条是'猫咪'。词条包含了原始问题的主体词'猫咪',但缺少了核心的'表情包梗图'部分,属于主体词匹配但限定词缺失。\n【最终得分 0.09】\n【规则说明】规则B:动机低分限制生效(动机0.00≤0.2),实际得分0.09已≤0.5",
  96. "strategy": "修饰短语",
  97. "iteration": 0,
  98. "is_selected": true,
  99. "segment_type": "修饰短语",
  100. "domain_index": 2,
  101. "domain_type": "修饰短语"
  102. },
  103. "word_猫咪_seg2_0": {
  104. "type": "word",
  105. "query": "猫咪",
  106. "level": 3,
  107. "relevance_score": 0.09,
  108. "evaluationReason": "【评估对象】词条\"猫咪\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】词条“猫咪”是一个名词,没有明确的动作意图,无法与原始问题的核心动机“制作”进行匹配。\n【品类维度 0.30】原始问题的主体是'猫咪表情包梗图',词条是'猫咪'。词条包含了原始问题的主体词'猫咪',但缺少了核心的'表情包梗图'部分,属于主体词匹配但限定词缺失。\n【最终得分 0.09】\n【规则说明】规则B:动机低分限制生效(动机0.00≤0.2),实际得分0.09已≤0.5",
  109. "strategy": "Word",
  110. "iteration": 0,
  111. "is_selected": true
  112. },
  113. "segment_3_r0": {
  114. "type": "segment",
  115. "query": "[中心名词] 表情包梗图",
  116. "level": 2,
  117. "relevance_score": 0.23399999999999999,
  118. "evaluationReason": "【评估对象】词条\"表情包梗图\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】词条“表情包梗图”是一个名词短语,没有明确的动作意图,因此无法与原始问题的核心动机“制作”进行匹配。\n【品类维度 0.78】原始问题的主体是'猫咪表情包梗图',词条是'表情包梗图'。词条包含了核心主体'表情包梗图',但缺少了限定词'猫咪',属于核心主体匹配但限定词不完全匹配的情况。\n【最终得分 0.23】\n【规则说明】规则B:动机低分限制生效(动机0.00≤0.2),实际得分0.23已≤0.5",
  119. "strategy": "中心名词",
  120. "iteration": 0,
  121. "is_selected": true,
  122. "segment_type": "中心名词",
  123. "domain_index": 3,
  124. "domain_type": "中心名词"
  125. },
  126. "word_表情包_seg3_0": {
  127. "type": "word",
  128. "query": "表情包",
  129. "level": 3,
  130. "relevance_score": 0.024,
  131. "evaluationReason": "【评估对象】词条\"表情包\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】词条“表情包”是一个名词,没有明确的动作意图,因此无法与原始问题的核心动机“制作”进行匹配。\n【品类维度 0.08】原始问题是关于制作'猫咪表情包梗图'的特定概念,而词条'表情包'是一个通用概念,虽然包含在原始问题中,但过于泛化,因此品类匹配度低。\n【最终得分 0.02】\n【规则说明】规则B:动机低分限制生效(动机0.00≤0.2),实际得分0.02已≤0.5",
  132. "strategy": "Word",
  133. "iteration": 0,
  134. "is_selected": true
  135. },
  136. "word_梗图_seg3_1": {
  137. "type": "word",
  138. "query": "梗图",
  139. "level": 3,
  140. "relevance_score": 0.15,
  141. "evaluationReason": "【评估对象】词条\"梗图\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】词条“梗图”是一个名词,没有明确的动作意图,无法与原始问题的“制作”动作进行匹配。\n【品类维度 0.50】原始问题是'猫咪表情包梗图',词条是'梗图'。词条是原始问题核心主体词的泛化,但缺少了'猫咪'和'表情包'这两个限定词,属于核心主体匹配但限定词缺失。\n【最终得分 0.15】\n【规则说明】规则B:动机低分限制生效(动机0.00≤0.2),实际得分0.15已≤0.5",
  142. "strategy": "Word",
  143. "iteration": 0,
  144. "is_selected": true
  145. },
  146. "round_1": {
  147. "type": "round",
  148. "query": "Round 1",
  149. "level": 10,
  150. "relevance_score": 0,
  151. "strategy": "第1轮",
  152. "iteration": 1,
  153. "is_selected": true
  154. },
  155. "step_sug_r1": {
  156. "type": "step",
  157. "query": "步骤1: 请求&评估推荐词 (50个)",
  158. "level": 11,
  159. "relevance_score": 0,
  160. "strategy": "请求&评估推荐词",
  161. "iteration": 1,
  162. "is_selected": true
  163. },
  164. "q_如何_r1_0": {
  165. "type": "q",
  166. "query": "[Q] 如何",
  167. "level": 12,
  168. "relevance_score": 0.024,
  169. "evaluationReason": "",
  170. "strategy": "Query",
  171. "iteration": 1,
  172. "is_selected": true,
  173. "type_label": "",
  174. "domain_index": 0,
  175. "domain_type": "疑问引导"
  176. },
  177. "sug_如何用兔子警官的口气讲话_r1_q0_0": {
  178. "type": "sug",
  179. "query": "[SUG] 如何用兔子警官的口气讲话",
  180. "level": 13,
  181. "relevance_score": -0.31,
  182. "evaluationReason": "【评估对象】词条\"如何用兔子警官的口气讲话\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作表情包和梗图\n【动机维度 -0.10】原始问题意图是「制作」表情包梗图,sug词条意图是「讲话」。两者动词本身存在偏差,但是都属于内容创作或表达的范畴,因此给予轻微负向偏离的评分。\n【品类维度 -0.50】原始问题核心主体为「猫咪表情包梗图」的制作,sug词条核心主体为「兔子警官的口气」。两者对象层和场景层完全不匹配,品类冲突,内容主题迥异,无任何关联性,存在品类冲突。\n【延伸词维度 -0.60】原始问题是关于“猫咪表情包梗图”的制作,而sug词条是关于“兔子警官的口气讲话”。sug词条中的所有词汇都与原始问题的作用域(猫咪、表情包、梗图、制作)完全不符,引入了全新的、不相关的对象和行为,严重稀释了原始问题的聚焦度,属于作用域稀释型,且程度较深。\n【最终得分 -0.31】\n【规则说明】规则3:核心维度严重负向,上限=0",
  183. "strategy": "推荐词",
  184. "iteration": 1,
  185. "is_selected": true,
  186. "scoreColor": "#ef4444",
  187. "parentQScore": 0.024
  188. },
  189. "sug_如何快速减肥_r1_q0_1": {
  190. "type": "sug",
  191. "query": "[SUG] 如何快速减肥",
  192. "level": 13,
  193. "relevance_score": -0.4,
  194. "evaluationReason": "【评估对象】词条\"如何快速减肥\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】「制作」猫咪表情包梗图\n【动机维度 0.00】原始问题的核心动机是「制作」,而sug词条的动机是「减肥」或「学会快速减肥的方法」。两者动作意图完全不相关。\n【品类维度 -0.85】原始问题对象层为「猫咪表情包梗图」,sug词条对象层为「减肥」,二者没有任何关联,品类完全不同且偏离。\n【延伸词维度 -0.60】sug词条「快速减肥」与原始问题「猫咪表情包梗图」在主题上完全不相关,引入了全新的、不相干的概念,严重稀释了原始问题的聚焦度,属于作用域稀释型延伸词。\n【最终得分 -0.40】\n【规则说明】规则3:核心维度严重负向,上限=0",
  195. "strategy": "推荐词",
  196. "iteration": 1,
  197. "is_selected": true,
  198. "scoreColor": "#ef4444",
  199. "parentQScore": 0.024
  200. },
  201. "sug_如何培养男人主动给你花钱_r1_q0_2": {
  202. "type": "sug",
  203. "query": "[SUG] 如何培养男人主动给你花钱",
  204. "level": 13,
  205. "relevance_score": -0.78,
  206. "evaluationReason": "【评估对象】词条\"如何培养男人主动给你花钱\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作(表情包梗图)\n【动机维度 -0.80】原始问题意图是「制作」图像内容,而sug词条的意图是「培养」一种行为。两者核心动作意图完全不相关且方向相悖,属于显著的动机不匹配。\n【品类维度 -0.80】原始问题核心是「猫咪表情包梗图」的「制作」方法,对象是「猫咪」,场景是「表情包梗图」。sug词条核心是「男人」的「培养」,对象是「男人」,与原始问题品类完全不符,属于不同领域,关联度极低。\n【延伸词维度 -0.60】sug词条与原始问题完全不相关,引入了与“猫咪表情包梗图制作”毫无关联的“培养男人主动花钱”这一主题,属于严重的稀释型延伸词,对原始问题的作用域和目的造成了极大的偏离和干扰。\n【最终得分 -0.78】\n【规则说明】规则3:核心维度严重负向,上限=0",
  207. "strategy": "推荐词",
  208. "iteration": 1,
  209. "is_selected": true,
  210. "scoreColor": "#ef4444",
  211. "parentQScore": 0.024
  212. },
  213. "sug_如何快速挣到钱_r1_q0_3": {
  214. "type": "sug",
  215. "query": "[SUG] 如何快速挣到钱",
  216. "level": 13,
  217. "relevance_score": -0.46,
  218. "evaluationReason": "【评估对象】词条\"如何快速挣到钱\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】原始问题的核心动机是「制作」,sug词条的核心动机是「挣钱」。两者在动作意图上完全不相关,不属于同一类别,因此得分为0。\n【品类维度 -1.00】原始问题关于「制作猫咪表情包梗图」,sug词条关于「快速挣钱」。两者在内容主体上完全不相关,品类完全冲突,没有任何共同作用且负向偏离。\n【延伸词维度 -0.60】sug词条「如何快速挣到钱」与原始问题「如何制作猫咪表情包梗图」完全不相关,引入了与原始问题核心目的和作用域完全无关的全新主题,属于作用域稀释型,且稀释程度非常高。\n【最终得分 -0.46】\n【规则说明】规则3:核心维度严重负向,上限=0",
  219. "strategy": "推荐词",
  220. "iteration": 1,
  221. "is_selected": true,
  222. "scoreColor": "#ef4444",
  223. "parentQScore": 0.024
  224. },
  225. "sug_如何和女生聊天找话题_r1_q0_4": {
  226. "type": "sug",
  227. "query": "[SUG] 如何和女生聊天找话题",
  228. "level": 13,
  229. "relevance_score": -0.42500000000000004,
  230. "evaluationReason": "【评估对象】词条\"如何和女生聊天找话题\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 -0.05】原始问题是“制作”表情包梗图,sug词条是“聊天”找话题,两者虽然都包含动作,但制作是创作行为,聊天是交流行为,动作方向完全不同,基本不相关并轻微偏离。\n【品类维度 -0.85】原始问题对象层为「猫咪表情包梗图」,sug词条对象层为「和女生聊天找话题」,两者品类完全不相关,属于严重错位,因此给出低分。\n【延伸词维度 -0.60】sug词条「如何和女生聊天找话题」与原始问题「如何制作猫咪表情包梗图」在主题、对象和目的上完全不相关,引入了与原始问题完全无关的全新主题,严重稀释了原始问题的聚焦度,属于作用域稀释型延伸词。\n【最终得分 -0.43】\n【规则说明】规则3:核心维度严重负向,上限=0",
  231. "strategy": "推荐词",
  232. "iteration": 1,
  233. "is_selected": true,
  234. "scoreColor": "#ef4444",
  235. "parentQScore": 0.024
  236. },
  237. "sug_如何连接别人家的加密wifi_r1_q0_5": {
  238. "type": "sug",
  239. "query": "[SUG] 如何连接别人家的加密wifi",
  240. "level": 13,
  241. "relevance_score": -0.6800000000000002,
  242. "evaluationReason": "【评估对象】词条\"如何连接别人家的加密wifi\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 -0.60】原始问题的核心动机是「制作」,sug词条的动机是「连接」。两者动作意图完全不相关,且领域完全不同,属于明显的动机不匹配。\n【品类维度 -0.80】原始问题内容主体为《猫咪表情包梗图的制作》,sug词条内容主体为《连接加密wifi》。两者对象层和场景层均完全不匹配,是完全不同的领域。\n【延伸词维度 -0.60】sug词条「如何连接别人家的加密wifi」与原始问题「如何制作猫咪表情包梗图」在主题上完全不相关,引入了与原始问题目的和作用域完全无关的新主题,属于作用域稀释型,且稀释程度高。\n【最终得分 -0.68】\n【规则说明】规则3:核心维度严重负向,上限=0",
  243. "strategy": "推荐词",
  244. "iteration": 1,
  245. "is_selected": true,
  246. "scoreColor": "#ef4444",
  247. "parentQScore": 0.024
  248. },
  249. "sug_如何逼自己自律学习_r1_q0_6": {
  250. "type": "sug",
  251. "query": "[SUG] 如何逼自己自律学习",
  252. "level": 13,
  253. "relevance_score": -0.8,
  254. "evaluationReason": "【评估对象】词条\"如何逼自己自律学习\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作表情包/梗图\n【动机维度 -0.80】原始问题的核心意图是「制作」内容产品,而sug词条的核心意图是「逼迫/自律学习」,两者动作意图完全不同且方向相反,缺乏任何关联。\n【品类维度 -0.85】原始问题对象层为「猫咪表情包梗图」,场景层为「制作」。sug词条对象层为「自律学习」。两者对象层、场景层均完全不匹配,不具备任何关联性。\n【延伸词维度 -0.60】sug词条「如何逼自己自律学习」与原始问题「如何制作猫咪表情包梗图」在主题上完全不相关,引入了与猫咪表情包制作无关的全新主题,严重稀释了原始问题的聚焦度,属于作用域稀释型,且程度较深。\n【最终得分 -0.80】\n【规则说明】规则3:核心维度严重负向,上限=0",
  255. "strategy": "推荐词",
  256. "iteration": 1,
  257. "is_selected": true,
  258. "scoreColor": "#ef4444",
  259. "parentQScore": 0.024
  260. },
  261. "sug_如何让男生持续上头_r1_q0_7": {
  262. "type": "sug",
  263. "query": "[SUG] 如何让男生持续上头",
  264. "level": 13,
  265. "relevance_score": -0.38000000000000006,
  266. "evaluationReason": "【评估对象】词条\"如何让男生持续上头\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】原始问题的核心动机是「制作」,sug词条的动机是「让...上头」(包含「使...」的含义),两者动作语义完全无关,且对象与场景也完全不同。\n【品类维度 -0.80】原始问题对象层为「猫咪表情包梗图制作」,而该sug词条对象层为「让男生持续上头的方法」。两者在核心名词上完全不符,类别差异巨大,毫无关联,故给予低分。\n【延伸词维度 -0.60】sug词条与原始问题完全不相关,引入了与“猫咪表情包梗图制作”毫无关联的“让男生持续上头”这一主题,严重稀释了原始问题的聚焦度,属于作用域稀释型,且程度较深。\n【最终得分 -0.38】\n【规则说明】规则3:核心维度严重负向,上限=0",
  267. "strategy": "推荐词",
  268. "iteration": 1,
  269. "is_selected": true,
  270. "scoreColor": "#ef4444",
  271. "parentQScore": 0.024
  272. },
  273. "sug_如何治疗早泻时间短_r1_q0_8": {
  274. "type": "sug",
  275. "query": "[SUG] 如何治疗早泻时间短",
  276. "level": 13,
  277. "relevance_score": -0.8,
  278. "evaluationReason": "【评估对象】词条\"如何治疗早泻时间短\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作(表情包梗图)\n【动机维度 -0.80】原始问题的核心动机是\"制作\",sug词条的核心动机是\"治疗\"。两者动作意图完全不相关,且方向相反。\n【品类维度 -0.85】原始问题对象层为「猫咪表情包梗图制作」,而sug词条对象层为「早泄治疗」,两者品类完全不相关,且医学话题和娱乐话题差异巨大,属于完全错误的品类。\n【延伸词维度 -0.60】sug词条「如何治疗早泻时间短」与原始问题「如何制作猫咪表情包梗图」在主题、对象和目的上完全不相关,引入了与原始问题完全无关的医学健康领域内容,严重稀释了原始问题的聚焦度,属于作用域稀释型延伸词,且程度非常严重。\n【最终得分 -0.80】\n【规则说明】规则3:核心维度严重负向,上限=0",
  279. "strategy": "推荐词",
  280. "iteration": 1,
  281. "is_selected": true,
  282. "scoreColor": "#ef4444",
  283. "parentQScore": 0.024
  284. },
  285. "sug_如何快速入睡_r1_q0_9": {
  286. "type": "sug",
  287. "query": "[SUG] 如何快速入睡",
  288. "level": 13,
  289. "relevance_score": -0.46,
  290. "evaluationReason": "【评估对象】词条\"如何快速入睡\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作表情包/梗图\n【动机维度 -0.80】原始问题是「制作」的动作意图。sug词条是「入睡」的动作意图。两者动作完全不相关且方向不同,属于强不匹配。\n【品类维度 0.00】原始问题意图制作猫咪表情包,内容主体是“猫咪表情包”。Sug词条内容主体为“入睡”,与原始问题无任何关联,属于不同类型,无法匹配。\n【延伸词维度 -0.60】sug词条「如何快速入睡」与原始问题「如何制作猫咪表情包梗图」在主题、对象和目的上完全不相关,引入了与原始问题核心需求无关的全新主题,严重稀释了原始问题的聚焦度,属于作用域稀释型。\n【最终得分 -0.46】\n【规则说明】规则3:核心维度严重负向,上限=0",
  291. "strategy": "推荐词",
  292. "iteration": 1,
  293. "is_selected": true,
  294. "scoreColor": "#ef4444",
  295. "parentQScore": 0.024
  296. },
  297. "q_制作_r1_1": {
  298. "type": "q",
  299. "query": "[Q] 制作",
  300. "level": 12,
  301. "relevance_score": 0.71,
  302. "evaluationReason": "",
  303. "strategy": "Query",
  304. "iteration": 1,
  305. "is_selected": true,
  306. "type_label": "",
  307. "domain_index": 1,
  308. "domain_type": "核心动作"
  309. },
  310. "sug_制作ppt_r1_q1_0": {
  311. "type": "sug",
  312. "query": "[SUG] 制作ppt",
  313. "level": 13,
  314. "relevance_score": -0.043000000000000024,
  315. "evaluationReason": "【评估对象】词条\"制作ppt\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.35】原始问题核心动作为「制作」,sug词条核心动作为「制作」,两者动作意图一致。虽然对象和场景完全不同,但考虑到核心动作的精确匹配,给予正向弱相关评分。\n【品类维度 -0.50】原始问题核心对象是「猫咪表情包梗图」的制作,场景是「表情包、梗图」。sug词条「制作ppt」对象是「ppt」,两者对象及场景完全不相关,品类错位。\n【延伸词维度 -0.18】原始问题是「制作猫咪表情包梗图」,核心是猫咪表情包。sug词条「制作ppt」引入了完全不相关的工具,稀释了原始问题的核心目的,属于作用域稀释型。\n【最终得分 -0.04】\n【规则说明】规则3:核心维度严重负向,上限=0",
  316. "strategy": "推荐词",
  317. "iteration": 1,
  318. "is_selected": true,
  319. "scoreColor": "#ef4444",
  320. "parentQScore": 0.71
  321. },
  322. "sug_制作表情包_r1_q1_1": {
  323. "type": "sug",
  324. "query": "[SUG] 制作表情包",
  325. "level": 13,
  326. "relevance_score": 0.83,
  327. "evaluationReason": "【评估对象】词条\"制作表情包\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.95】原始问题的核心动机是「制作」,sug词条也涉及「制作」,核心动作完全一致,仅仅是省略了部分限定词。\n【品类维度 0.55】原始问题对象层为“猫咪表情包梗图”,限定词为“猫咪”和“梗图”。sug词条对象层为“表情包”,“梗图”和“猫咪”限定词缺失,覆盖度不高,但核心主体匹配。\n【延伸词维度 0.00】sug词条未引入延伸词,所有词汇均属于原始问题作用域范围。\n【最终得分 0.83】\n【规则说明】情况4:无延伸词,权重调整为 动机70% + 品类30%",
  328. "strategy": "推荐词",
  329. "iteration": 1,
  330. "is_selected": true,
  331. "scoreColor": "#22c55e",
  332. "parentQScore": 0.71
  333. },
  334. "sug_制作简历_r1_q1_2": {
  335. "type": "sug",
  336. "query": "[SUG] 制作简历",
  337. "level": 13,
  338. "relevance_score": -0.38000000000000006,
  339. "evaluationReason": "【评估对象】词条\"制作简历\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】原始问题的核心动机是「制作」,sug词条的动机也是「制作」。虽然动机相同,但由于对象不同,导致动机匹配度不高,且不属于制作的子集,不构成相关性,故评分为0。\n【品类维度 -0.80】原始问题内容主体为《猫咪表情包梗图》,平台sug词条为《简历》。两者在核心对象和品类上完全不匹配,差异巨大。\n【延伸词维度 -0.60】sug词条「制作简历」与原始问题「如何制作猫咪表情包梗图」完全不相关,引入了与原始问题核心目的和作用域都无关的全新主题,属于作用域稀释型,且稀释程度高。\n【最终得分 -0.38】\n【规则说明】规则3:核心维度严重负向,上限=0",
  340. "strategy": "推荐词",
  341. "iteration": 1,
  342. "is_selected": true,
  343. "scoreColor": "#ef4444",
  344. "parentQScore": 0.71
  345. },
  346. "sug_制作ppt的ai软件_r1_q1_3": {
  347. "type": "sug",
  348. "query": "[SUG] 制作ppt的ai软件",
  349. "level": 13,
  350. "relevance_score": -0.75,
  351. "evaluationReason": "【评估对象】词条\"制作ppt的ai软件\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 -0.70】原始问题的核心动机是“制作”,sug词条的核心动机也是“制作”。但原始问题是制作“猫咪表情包梗图”,sug词条是制作“ppt”,制作的对象完全不同,导致制作这一动作的实际应用场景和技巧完全不一致,动作意图完全冲突。\n【品类维度 -0.85】原始问题对象层为「猫咪表情包梗图」,场景层为「制作」。sug词条对象层为「ppt」和「ai软件」,场景层为「制作」。二者核心对象完全不同,品类错位严重。\n【延伸词维度 -0.60】sug词条「制作ppt的ai软件」中的所有词汇均与原始问题「如何制作猫咪表情包梗图」的作用域(制作、猫咪表情包梗图)完全不符,引入了与原始问题无关的全新主题,严重稀释了原始问题的聚焦度,导致内容完全偏离。\n【最终得分 -0.75】\n【规则说明】规则3:核心维度严重负向,上限=0",
  352. "strategy": "推荐词",
  353. "iteration": 1,
  354. "is_selected": true,
  355. "scoreColor": "#ef4444",
  356. "parentQScore": 0.71
  357. },
  358. "sug_制作冰糖葫芦_r1_q1_4": {
  359. "type": "sug",
  360. "query": "[SUG] 制作冰糖葫芦",
  361. "level": 13,
  362. "relevance_score": -0.8,
  363. "evaluationReason": "【评估对象】词条\"制作冰糖葫芦\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 -0.80】原始问题的核心动机是「制作」,sug词条的核心动机也是「制作」。虽然动作一致,但制作的对象(猫咪表情包梗图 vs 冰糖葫芦)完全不相关,导致整体动机意图完全冲突。\n【品类维度 -0.85】原始问题对象层为「猫咪表情包梗图」,涉及制作;sug词条对象层为「冰糖葫芦」,涉及制作。二者核心对象「猫咪表情包梗图」与「冰糖葫芦」品类完全不同且无法关联,属于完全不匹配的类别。\n【延伸词维度 -0.60】sug词条「制作冰糖葫芦」与原始问题「如何制作猫咪表情包梗图」完全不相关,引入了与原始问题主题无关的全新概念「冰糖葫芦」,严重稀释了原始问题的聚焦度,属于作用域稀释型。\n【最终得分 -0.80】\n【规则说明】规则3:核心维度严重负向,上限=0",
  364. "strategy": "推荐词",
  365. "iteration": 1,
  366. "is_selected": true,
  367. "scoreColor": "#ef4444",
  368. "parentQScore": 0.71
  369. },
  370. "sug_制作视频_r1_q1_5": {
  371. "type": "sug",
  372. "query": "[SUG] 制作视频",
  373. "level": 13,
  374. "relevance_score": -0.1600000000000001,
  375. "evaluationReason": "【评估对象】词条\"制作视频\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作(表情包梗图)\n【动机维度 0.35】原始问题的核心动机是学习「制作」表情包梗图,sug词条是「制作」视频。两者都涉及「制作」这一动作,虽然具体的制作对象不同(表情包梗图 vs 视频),但动作是相关的,属于同一大类行为。\n【品类维度 -0.80】原始问题核心对象为「猫咪表情包梗图」,sug词条核心对象为「视频」。两者品类完全不同且偏离,无任何共同作用域。\n【延伸词维度 -0.15】原始问题聚焦于「表情包梗图」的制作,而sug词条「制作视频」引入了新的媒体形式「视频」,与原始问题「表情包梗图」的制作目的不符,稀释了原始问题的聚焦度。\n【最终得分 -0.16】\n【规则说明】规则3:核心维度严重负向,上限=0",
  376. "strategy": "推荐词",
  377. "iteration": 1,
  378. "is_selected": true,
  379. "scoreColor": "#ef4444",
  380. "parentQScore": 0.71
  381. },
  382. "sug_制作简易调光台灯_r1_q1_6": {
  383. "type": "sug",
  384. "query": "[SUG] 制作简易调光台灯",
  385. "level": 13,
  386. "relevance_score": -0.7050000000000001,
  387. "evaluationReason": "【评估对象】词条\"制作简易调光台灯\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 -0.65】原始问题意图是「制作」关于猫咪表情包梗图,sug词条是「制作」简易调光台灯。两个「制作」的动作目标和领域完全不相干,语义关联性极低,方向完全不同。\n【品类维度 -0.80】原始问题核心对象为「猫咪表情包梗图」,sug词条核心对象为「调光台灯」。两者在对象层完全不匹配,为完全无关的品类,且无任何共享的限定词。\n【延伸词维度 -0.60】sug词条「制作简易调光台灯」与原始问题「如何制作猫咪表情包梗图」完全不相关,引入了与原始问题核心目的和作用域完全无关的全新主题,严重稀释了原始问题的聚焦度,属于作用域稀释型。\n【最终得分 -0.71】\n【规则说明】规则3:核心维度严重负向,上限=0",
  388. "strategy": "推荐词",
  389. "iteration": 1,
  390. "is_selected": true,
  391. "scoreColor": "#ef4444",
  392. "parentQScore": 0.71
  393. },
  394. "sug_制作动物书_r1_q1_7": {
  395. "type": "sug",
  396. "query": "[SUG] 制作动物书",
  397. "level": 13,
  398. "relevance_score": -0.08500000000000002,
  399. "evaluationReason": "【评估对象】词条\"制作动物书\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.35】原始问题的动机是“制作”,sug词条的动机也是“制作”,两者核心动作一致,但sug词条描述的对象过于宽泛,导致关联性减弱。\n【品类维度 -0.50】原始问题核心对象是「猫咪表情包梗图」,场景为「制作」。sug词条核心对象为「动物书」,与原始问题完全不符,品类严重错位。\n【延伸词维度 -0.60】原始问题聚焦于「猫咪表情包梗图」的制作,而sug词条「动物书」引入了完全不相关的对象「动物书」和动作「制作」。这不仅没有补全原始问题的作用域,反而将其稀释,导致内容偏离核心,属于作用域稀释型。\n【最终得分 -0.09】\n【规则说明】规则3:核心维度严重负向,上限=0",
  400. "strategy": "推荐词",
  401. "iteration": 1,
  402. "is_selected": true,
  403. "scoreColor": "#ef4444",
  404. "parentQScore": 0.71
  405. },
  406. "sug_制作香水_r1_q1_8": {
  407. "type": "sug",
  408. "query": "[SUG] 制作香水",
  409. "level": 13,
  410. "relevance_score": -0.38000000000000006,
  411. "evaluationReason": "【评估对象】词条\"制作香水\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】原始问题核心动机是“制作”,sug词条核心动机也是“制作”,虽然两者动作相同,但sug词条与原始问题在对象和场景上完全不相关。仅有相同的动作,但对象完全不相关时,评分为0。\n【品类维度 -0.80】原始问题内容主体为《猫咪表情包梗图》,sug词条内容主体为《香水》。两者对象层不匹配,品类完全冲突。\n【延伸词维度 -0.60】sug词条「制作香水」与原始问题「如何制作猫咪表情包梗图」完全不相关,引入了全新的、无关的主题,严重稀释了原始问题的聚焦度,导致内容完全偏离,属于作用域稀释型。\n【最终得分 -0.38】\n【规则说明】规则3:核心维度严重负向,上限=0",
  412. "strategy": "推荐词",
  413. "iteration": 1,
  414. "is_selected": true,
  415. "scoreColor": "#ef4444",
  416. "parentQScore": 0.71
  417. },
  418. "sug_制作美食_r1_q1_9": {
  419. "type": "sug",
  420. "query": "[SUG] 制作美食",
  421. "level": 13,
  422. "relevance_score": -0.24,
  423. "evaluationReason": "【评估对象】词条\"制作美食\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 -0.05】原始问题的核心动机是「制作」,sug词条的动机也是「制作」。虽然动机行为一致,但制作的对象完全不相关,方向轻度偏离,因此给出负分,表明关联性低。\n【品类维度 -0.50】原始问题对象层为「猫咪表情包梗图」,sug词条对象层为「美食」。两者对象层内容主体完全不匹配,品类冲突,差异巨大偏离度高。\n【延伸词维度 -0.15】sug词条「制作美食」中的「美食」与原始问题「猫咪表情包梗图」完全不相关,引入了无关信息,分散了用户对猫咪表情包制作的关注,属于作用域稀释型。\n【最终得分 -0.24】\n【规则说明】规则3:核心维度严重负向,上限=0",
  424. "strategy": "推荐词",
  425. "iteration": 1,
  426. "is_selected": true,
  427. "scoreColor": "#ef4444",
  428. "parentQScore": 0.71
  429. },
  430. "q_猫咪_r1_2": {
  431. "type": "q",
  432. "query": "[Q] 猫咪",
  433. "level": 12,
  434. "relevance_score": 0.09,
  435. "evaluationReason": "",
  436. "strategy": "Query",
  437. "iteration": 1,
  438. "is_selected": true,
  439. "type_label": "",
  440. "domain_index": 2,
  441. "domain_type": "修饰短语"
  442. },
  443. "sug_猫咪领养免费领养_r1_q2_0": {
  444. "type": "sug",
  445. "query": "[SUG] 猫咪领养免费领养",
  446. "level": 13,
  447. "relevance_score": -0.78,
  448. "evaluationReason": "【评估对象】词条\"猫咪领养免费领养\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 -0.80】原始问题的核心动机是“制作”。sug词条“猫咪领养免费领养”的核心动机是“领养”。sug词条的“领养”动作与原始问题的“制作”动作完全不相关且方向完全不同,因此得分较低。\n【品类维度 -0.80】原始问题的核心是「猫咪表情包梗图」的「制作」(对象+场景),而sug词条是「猫咪领养免费领养」(对象+行为)。两者的对象层和场景层都完全不匹配,品类冲突严重。\n【延伸词维度 -0.60】原始问题是关于“制作猫咪表情包梗图”的,核心是创作和娱乐。sug词条“猫咪领养免费领养”引入了“领养”这一与原始问题完全无关的延伸词,且“免费”是新增限定条件。这不仅没有补全原始问题的作用域,反而引入了完全不相关的概念,严重稀释了原始问题的聚焦度,导致内容偏离,属于作用域稀释型。\n【最终得分 -0.78】\n【规则说明】规则3:核心维度严重负向,上限=0",
  449. "strategy": "推荐词",
  450. "iteration": 1,
  451. "is_selected": true,
  452. "scoreColor": "#ef4444",
  453. "parentQScore": 0.09
  454. },
  455. "sug_猫咪叫声吸引小猫_r1_q2_1": {
  456. "type": "sug",
  457. "query": "[SUG] 猫咪叫声吸引小猫",
  458. "level": 13,
  459. "relevance_score": -0.73,
  460. "evaluationReason": "【评估对象】词条\"猫咪叫声吸引小猫\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作表情包梗图\n【动机维度 -0.70】原始问题的核心动机是学习「制作」表情包梗图,而sug词条的动机是「吸引」小猫。两个动作的意图完全不相关,甚至方向相反,因此得分较低。\n【品类维度 -0.80】原始问题核心对象为《猫咪表情包梗图》,场景为《制作》。sug词《猫咪叫声吸引小猫》核心对象为《猫咪叫声》和《小猫》,场景为《吸引》。二者核心主体和场景均完全不匹配,品类完全冲突,负向偏离严重。\n【延伸词维度 -0.60】原始问题是「制作猫咪表情包梗图」,核心是制作和表情包。sug词条「猫咪叫声吸引小猫」与原始问题完全无关,引入了新的主题,严重稀释了原始问题的聚焦度,属于作用域稀释型。\n【最终得分 -0.73】\n【规则说明】规则3:核心维度严重负向,上限=0",
  461. "strategy": "推荐词",
  462. "iteration": 1,
  463. "is_selected": true,
  464. "scoreColor": "#ef4444",
  465. "parentQScore": 0.09
  466. },
  467. "sug_猫咪头像_r1_q2_2": {
  468. "type": "sug",
  469. "query": "[SUG] 猫咪头像",
  470. "level": 13,
  471. "relevance_score": -0.19000000000000003,
  472. "evaluationReason": "【评估对象】词条\"猫咪头像\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】原始问题的核心动机是“制作”表情包梗图,而sug词条「猫咪头像」没有明确的动机,无法与原始问题的“制作”进行匹配。\n【品类维度 -0.20】原始问题核心对象是「猫咪表情包梗图」的制作,sug词对象为「猫咪头像」。两者对象不符,且原始问题场景为「表情包梗图」,sug词无此场景限定,匹配度很低。\n【延伸词维度 -0.15】原始问题是关于「制作猫咪表情包梗图」的教程或方法,核心是“制作”和“表情包梗图”。sug词条「猫咪头像」与原始问题的核心目的“制作表情包梗图”关联度低,且“头像”与“表情包梗图”是两个不同的概念,稀释了原始问题的聚焦度。\n【最终得分 -0.19】\n【规则说明】情况3:sug词条无动作意图,权重调整为 品类80% + 延伸词20%",
  473. "strategy": "推荐词",
  474. "iteration": 1,
  475. "is_selected": true,
  476. "scoreColor": "#ef4444",
  477. "parentQScore": 0.09
  478. },
  479. "sug_猫咪呕吐_r1_q2_3": {
  480. "type": "sug",
  481. "query": "[SUG] 猫咪呕吐",
  482. "level": 13,
  483. "relevance_score": -0.43000000000000005,
  484. "evaluationReason": "【评估对象】词条\"猫咪呕吐\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作(表情包梗图)\n【动机维度 0.00】原始问题的核心动机是「制作」,sug词条「猫咪呕吐」无明确的动作意图,因此动机匹配度为0。\n【品类维度 -0.50】原始问题是关于《猫咪表情包梗图》的制作,核心主体是“表情包梗图”,限定词是“猫咪”。sug词条是《猫咪呕吐》,核心主体是“呕吐”,描述的是一种生理现象。“猫咪”是共同的,但主体词发生明显错位,品类完全不一致,完全无关。\n【延伸词维度 -0.15】sug词条「猫咪呕吐」与原始问题「制作猫咪表情包梗图」的核心目的和作用域完全不符,引入了与制作表情包无关的负面信息,严重稀释了原始问题的聚焦度,属于作用域稀释型。\n【最终得分 -0.43】\n【规则说明】情况3:sug词条无动作意图,权重调整为 品类80% + 延伸词20% + 规则3:核心维度严重负向,上限=0",
  485. "strategy": "推荐词",
  486. "iteration": 1,
  487. "is_selected": true,
  488. "scoreColor": "#ef4444",
  489. "parentQScore": 0.09
  490. },
  491. "sug_猫咪零食_r1_q2_4": {
  492. "type": "sug",
  493. "query": "[SUG] 猫咪零食",
  494. "level": 13,
  495. "relevance_score": -0.43000000000000005,
  496. "evaluationReason": "【评估对象】词条\"猫咪零食\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作(动作)+ 猫咪表情包梗图(对象)\n【动机维度 0.00】原始问题核心动机是制作,而sug词条「猫咪零食」无明确动作意图,因此动机维度评分为0。\n【品类维度 -0.50】原始问题核心是《猫咪+表情包+梗图》(制作),sug词条是《猫咪+零食》。两者对象层和场景层完全不匹配,品类冲突,完全无关。\n【延伸词维度 -0.15】原始问题是关于「制作猫咪表情包梗图」的方法,而sug词条「猫咪零食」与制作表情包完全无关,属于作用域无关型延伸词,且分散了用户对核心任务的注意力,导致稀释。\n【最终得分 -0.43】\n【规则说明】情况3:sug词条无动作意图,权重调整为 品类80% + 延伸词20% + 规则3:核心维度严重负向,上限=0",
  497. "strategy": "推荐词",
  498. "iteration": 1,
  499. "is_selected": true,
  500. "scoreColor": "#ef4444",
  501. "parentQScore": 0.09
  502. },
  503. "sug_猫咪驱虫药推荐_r1_q2_5": {
  504. "type": "sug",
  505. "query": "[SUG] 猫咪驱虫药推荐",
  506. "level": 13,
  507. "relevance_score": -0.78,
  508. "evaluationReason": "【评估对象】词条\"猫咪驱虫药推荐\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 -0.80】原始问题的核心动机是「制作」内容(表情包/梗图),而sug词条的核心动机是「推荐/了解」某种商品(驱虫药)。两者动作意图完全不匹配,且方向南辕北辙,属于完全无关或冲突的情况。\n【品类维度 -0.80】原始问题内容主体为《猫咪表情包梗图》,平台sug词条内容主体为《猫咪驱虫药》。两者核心对象和属性完全不匹配,是完全不同的品类,且sug存在品类冲突和语义的显著错位。\n【延伸词维度 -0.60】原始问题是关于「制作猫咪表情包梗图」,核心是创意和制作。sug词条「猫咪驱虫药推荐」引入了「驱虫药」这一与原始问题完全无关的健康护理领域,严重偏离了原始问题的核心目的和作用域,属于作用域稀释型。\n【最终得分 -0.78】\n【规则说明】规则3:核心维度严重负向,上限=0",
  509. "strategy": "推荐词",
  510. "iteration": 1,
  511. "is_selected": true,
  512. "scoreColor": "#ef4444",
  513. "parentQScore": 0.09
  514. },
  515. "sug_猫咪尿闭怎么在家治疗_r1_q2_6": {
  516. "type": "sug",
  517. "query": "[SUG] 猫咪尿闭怎么在家治疗",
  518. "level": 13,
  519. "relevance_score": -0.4,
  520. "evaluationReason": "【评估对象】词条\"猫咪尿闭怎么在家治疗\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】原始问题核心动机是「制作」,sug词条核心动机是「治疗」。两者完全不相关。即使猫咪这个主题相关,但因为核心动机不一致,所以得分为零。\n【品类维度 -0.85】原始问题对象层为「猫咪表情包梗图制作」,sug词条对象层为「猫咪尿闭」,两者对象主体完全不符且关联性极低。一个关于娱乐创作,另一个关于宠物医疗,品类冲突明显。\n【延伸词维度 -0.60】原始问题是关于「制作猫咪表情包梗图」的创意和娱乐需求。sug词条「猫咪尿闭怎么在家治疗」引入了「猫咪健康问题」和「治疗」的全新维度,与原始问题的「制作」和「娱乐」目的完全不符,属于作用域稀释型,且偏离度极高,严重分散了用户注意力,因此给予较低的负分。\n【最终得分 -0.40】\n【规则说明】规则3:核心维度严重负向,上限=0",
  521. "strategy": "推荐词",
  522. "iteration": 1,
  523. "is_selected": true,
  524. "scoreColor": "#ef4444",
  525. "parentQScore": 0.09
  526. },
  527. "sug_猫咪品种_r1_q2_7": {
  528. "type": "sug",
  529. "query": "[SUG] 猫咪品种",
  530. "level": 13,
  531. "relevance_score": -0.19000000000000003,
  532. "evaluationReason": "【评估对象】词条\"猫咪品种\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作表情包/梗图\n【动机维度 0.00】原始问题的核心动机是\"制作\"猫咪表情包/梗图,而sug词条\"猫咪品种\"没有任何明确动作意图,因此无法进行动机匹配。\n【品类维度 -0.20】原始问题核心对象是“猫咪表情包梗图”及其“制作”动作,场景隐含“娱乐、社交”。Sug词条“猫咪品种”核心对象是“猫咪品种”,与原始问题主体词相关,但与“表情包梗图”无关,品类冲突。\n【延伸词维度 -0.15】原始问题关注「制作猫咪表情包梗图」的方法,而sug词条「猫咪品种」引入了与制作方法无关的猫咪信息,稀释了原始问题的聚焦度,属于作用域稀释型。\n【最终得分 -0.19】\n【规则说明】情况3:sug词条无动作意图,权重调整为 品类80% + 延伸词20%",
  533. "strategy": "推荐词",
  534. "iteration": 1,
  535. "is_selected": true,
  536. "scoreColor": "#ef4444",
  537. "parentQScore": 0.09
  538. },
  539. "sug_猫咪玩具_r1_q2_8": {
  540. "type": "sug",
  541. "query": "[SUG] 猫咪玩具",
  542. "level": 13,
  543. "relevance_score": -0.4700000000000001,
  544. "evaluationReason": "【评估对象】词条\"猫咪玩具\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作/生成\n【动机维度 0.00】原始问题核心动机是『制作/生成』,sug词条「猫咪玩具」中没有体现任何动作或意图,与原始问题的核心动机完全不匹配。\n【品类维度 -0.55】原始问题对象层为「表情包梗图」,场景层包括「猫咪」;sug词条对象层为「玩具」,场景层为「猫咪」。二者核心对象层完全不同,存在品类冲突。\n【延伸词维度 -0.15】原始问题是关于「制作猫咪表情包梗图」的方法,核心是「制作」和「表情包梗图」。sug词条「猫咪玩具」与原始问题的核心目的和作用域完全不符,属于无关且稀释主题的延伸词,分散了用户对制作表情包的注意力。\n【最终得分 -0.47】\n【规则说明】情况3:sug词条无动作意图,权重调整为 品类80% + 延伸词20% + 规则3:核心维度严重负向,上限=0",
  545. "strategy": "推荐词",
  546. "iteration": 1,
  547. "is_selected": true,
  548. "scoreColor": "#ef4444",
  549. "parentQScore": 0.09
  550. },
  551. "sug_猫咪感冒打喷嚏吃什么药_r1_q2_9": {
  552. "type": "sug",
  553. "query": "[SUG] 猫咪感冒打喷嚏吃什么药",
  554. "level": 13,
  555. "relevance_score": -0.4,
  556. "evaluationReason": "【评估对象】词条\"猫咪感冒打喷嚏吃什么药\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】原始问题的核心动机是「制作」表情包梗图,而sug词条「猫咪感冒打喷嚏吃什么药」的核心动机是「治疗」或「了解」猫咪疾病。两者动机完全不关联,且sug词条无明确动机。因此,动机维度得分为0。\n【品类维度 -0.85】原始问题意在学习制作「猫咪表情包梗图」的技能,核心主体为「表情包制作」。sug词条则关注猫咪的「健康喂养」,品类完全不符,且有误导性。\n【延伸词维度 -0.60】sug词条「猫咪感冒打喷嚏吃什么药」与原始问题「如何制作猫咪表情包梗图」完全不相关,引入了与制作表情包无关的猫咪健康问题,严重稀释了原始问题的聚焦度,属于作用域稀释型。\n【最终得分 -0.40】\n【规则说明】规则3:核心维度严重负向,上限=0",
  557. "strategy": "推荐词",
  558. "iteration": 1,
  559. "is_selected": true,
  560. "scoreColor": "#ef4444",
  561. "parentQScore": 0.09
  562. },
  563. "q_表情包_r1_3": {
  564. "type": "q",
  565. "query": "[Q] 表情包",
  566. "level": 12,
  567. "relevance_score": 0.024,
  568. "evaluationReason": "",
  569. "strategy": "Query",
  570. "iteration": 1,
  571. "is_selected": true,
  572. "type_label": "",
  573. "domain_index": 3,
  574. "domain_type": "中心名词"
  575. },
  576. "sug_表情包抽象_r1_q3_0": {
  577. "type": "sug",
  578. "query": "[SUG] 表情包抽象",
  579. "level": 13,
  580. "relevance_score": 0.17,
  581. "evaluationReason": "【评估对象】词条\"表情包抽象\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作(猫咪表情包梗图)\n【动机维度 0.00】sug词条「表情包抽象」仅包含对象层面的描述,无法识别出明确的动作意图,因此动机匹配度为0。\n【品类维度 0.25】原始问题对象层为“猫咪表情包梗图”,限定词为“制作”。sug词条对象层为“表情包抽象”,仅有“表情包”是部分匹配,且无限定词,相关度一般。\n【延伸词维度 -0.15】原始问题聚焦于「猫咪表情包梗图」的制作方法,而sug词条「表情包抽象」引入了新的概念「抽象」,与原始问题中的「猫咪」和「梗图」无直接关联,且未提及制作方法,稀释了原始问题的聚焦度。\n【最终得分 0.17】\n【规则说明】情况3:sug词条无动作意图,权重调整为 品类80% + 延伸词20%",
  582. "strategy": "推荐词",
  583. "iteration": 1,
  584. "is_selected": true,
  585. "scoreColor": "#22c55e",
  586. "parentQScore": 0.024
  587. },
  588. "sug_表情包怎么制作_r1_q3_1": {
  589. "type": "sug",
  590. "query": "[SUG] 表情包怎么制作",
  591. "level": 13,
  592. "relevance_score": 0.8749999999999999,
  593. "evaluationReason": "【评估对象】词条\"表情包怎么制作\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作(表情包梗图)\n【动机维度 0.95】原始问题的核心动机是「制作」,sug词条「表情包怎么制作」的核心动机也是「制作」。两者均是制作行为,制作方法也语义相近。\n【品类维度 0.70】sug词条「表情包」完全覆盖了原始问题对象层核心词「表情包」。但原始问题限定词「猫咪」、「梗图」未覆盖,导致分数无法更高。\n【延伸词维度 0.00】sug词条未引入延伸词,所有词汇均属于原始问题作用域范围。sug词条是原始问题的泛化表达,不包含延伸词。\n【最终得分 0.87】\n【规则说明】情况4:无延伸词,权重调整为 动机70% + 品类30%",
  594. "strategy": "推荐词",
  595. "iteration": 1,
  596. "is_selected": true,
  597. "scoreColor": "#22c55e",
  598. "parentQScore": 0.024
  599. },
  600. "sug_表情包可爱_r1_q3_2": {
  601. "type": "sug",
  602. "query": "[SUG] 表情包可爱",
  603. "level": 13,
  604. "relevance_score": 0.19400000000000003,
  605. "evaluationReason": "【评估对象】词条\"表情包可爱\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作/生成(动作)+ 猫咪表情包梗图(对象)\n【动机维度 0.00】原始问题的核心动机是「制作」,sug词条「表情包可爱」没有包含任何动作意图,因此无法评估动作匹配度。\n【品类维度 0.28】原始问题对象层为「猫咪表情包梗图」,场景层无;sug词对象层为「表情包」,场景层为「可爱」。sug词仅与原始问题的部分对象层「表情包」重合,缺失所有限定词,匹配度较低。\n【延伸词维度 -0.15】原始问题是关于「制作」猫咪表情包梗图的方法,而sug词条「可爱」是表情包的属性描述,与制作方法无关,稀释了原始问题的核心目的。\n【最终得分 0.19】\n【规则说明】情况3:sug词条无动作意图,权重调整为 品类80% + 延伸词20%",
  606. "strategy": "推荐词",
  607. "iteration": 1,
  608. "is_selected": true,
  609. "scoreColor": "#22c55e",
  610. "parentQScore": 0.024
  611. },
  612. "sug_表情包图片大全_r1_q3_3": {
  613. "type": "sug",
  614. "query": "[SUG] 表情包图片大全",
  615. "level": 13,
  616. "relevance_score": 0.14500000000000002,
  617. "evaluationReason": "【评估对象】词条\"表情包图片大全\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】原始问题核心动机是「制作」或「生产」,而sug词条「表情包图片大全」的动机意图是「寻找」或「查看」。两者动机完全不匹配。\n【品类维度 0.40】原始问题对象层为「猫咪表情包梗图」,场景层为「制作/如何」。Sug词条对象层为「表情包图片大全」,无场景层。对象层部分匹配(表情包)。\n【延伸词维度 -0.15】原始问题是「制作」猫咪表情包梗图,强调动作和对象。sug词条「图片大全」引入了新的对象,且与「制作」这一核心动机不符,稀释了原始问题的聚焦度。\n【最终得分 0.15】",
  618. "strategy": "推荐词",
  619. "iteration": 1,
  620. "is_selected": true,
  621. "scoreColor": "#22c55e",
  622. "parentQScore": 0.024
  623. },
  624. "sug_表情包搞笑配文_r1_q3_4": {
  625. "type": "sug",
  626. "query": "[SUG] 表情包搞笑配文",
  627. "level": 13,
  628. "relevance_score": 0.17,
  629. "evaluationReason": "【评估对象】词条\"表情包搞笑配文\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】原始问题的核心动机是\"制作\",而sug词条\"表情包搞笑配文\"中没有明确的动作意图。sug词条侧重于表达内容,不包含制作这一动作。\n【品类维度 0.25】原始问题核心是「猫咪表情包梗图」的「制作」,sug词「表情包搞笑配文」包含「表情包」核心对象,但缺失「猫咪」和「梗图」限定,且引入了「配文」这一新的对象,覆盖度较低。\n【延伸词维度 -0.15】原始问题聚焦于「制作猫咪表情包梗图」的方法,而sug词条「表情包搞笑配文」将主题从「猫咪」和「梗图」泛化为「表情包」,并引入了「配文」这一新的制作环节,稀释了原始问题的聚焦度,降低了内容的针对性。\n【最终得分 0.17】\n【规则说明】情况3:sug词条无动作意图,权重调整为 品类80% + 延伸词20%",
  630. "strategy": "推荐词",
  631. "iteration": 1,
  632. "is_selected": true,
  633. "scoreColor": "#22c55e",
  634. "parentQScore": 0.024
  635. },
  636. "sug_表情包模板_r1_q3_5": {
  637. "type": "sug",
  638. "query": "[SUG] 表情包模板",
  639. "level": 13,
  640. "relevance_score": 0.41000000000000003,
  641. "evaluationReason": "【评估对象】词条\"表情包模板\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】原始问题核心动机是「制作」表情包,sug词条「表情包模板」没有明确的动作意图。因此,动机维度得分为0。\n【品类维度 0.50】原始问题对象层为“猫咪表情包梗图”,作用域包含“猫咪”和“梗图”。平台sug词条只包含“表情包”,缺失“猫咪”和“梗图”限定,主体部分匹配、限定部分缺失。\n【延伸词维度 0.05】sug词条「表情包模板」中的「模板」是延伸词,它为原始问题「如何制作猫咪表情包梗图」提供了辅助工具,有助于用户达成制作表情包的目的,属于作用域辅助型。\n【最终得分 0.41】\n【规则说明】情况3:sug词条无动作意图,权重调整为 品类80% + 延伸词20%",
  642. "strategy": "推荐词",
  643. "iteration": 1,
  644. "is_selected": true,
  645. "scoreColor": "#22c55e",
  646. "parentQScore": 0.024
  647. },
  648. "sug_表情包发给女朋友_r1_q3_6": {
  649. "type": "sug",
  650. "query": "[SUG] 表情包发给女朋友",
  651. "level": 13,
  652. "relevance_score": -0.12000000000000001,
  653. "evaluationReason": "【评估对象】词条\"表情包发给女朋友\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作(表情包梗图)\n【动机维度 -0.05】原始问题的核心动机是「制作」表情包,而 sug 词条的核心动机是「发送/转发」表情包。两者都与表情包有关,但在动作意图上存在轻微偏离。\n【品类维度 -0.20】原始问题核心对象为「猫咪表情包梗图」,场景为「制作」。sug词条核心对象为「表情包」,无限定词,且存在对象错位(「女朋友」是动作的接收者而非内容主体的一部分),与原始问题的核心内容主体不符且存在误导性。\n【延伸词维度 -0.15】原始问题是关于「制作」猫咪表情包梗图,而sug词条「发给女朋友」引入了与制作无关的「使用场景」和「对象」,稀释了原始问题的核心目的和聚焦度,属于作用域稀释型。\n【最终得分 -0.12】",
  654. "strategy": "推荐词",
  655. "iteration": 1,
  656. "is_selected": true,
  657. "scoreColor": "#ef4444",
  658. "parentQScore": 0.024
  659. },
  660. "sug_表情包制作赚钱_r1_q3_7": {
  661. "type": "sug",
  662. "query": "[SUG] 表情包制作赚钱",
  663. "level": 13,
  664. "relevance_score": -0.06999999999999999,
  665. "evaluationReason": "【评估对象】词条\"表情包制作赚钱\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作(表情包梗图)\n【动机维度 -0.15】原始问题的核心动机是学习「制作」表情包,而sug词条的动机是「制作」后「赚钱」。虽然都包含制作,但sug词条引入了原始问题不包含的商业行为,导致轻度偏离。\n【品类维度 0.05】原始问题对象层为“猫咪表情包梗图制作”,sug词条对象层为“表情包制作”,场景层为“赚钱”。sug词条只涵盖了“表情包制作”这一通用概念,但限定词“猫咪”和“梗图”缺失,场景“赚钱”与制作本身无关,主体词过度泛化。\n【延伸词维度 -0.15】原始问题聚焦于「制作猫咪表情包梗图」的方法,而sug词条「赚钱」引入了商业目的,与原始问题的核心需求(制作方法)无关,且稀释了对制作技巧的关注,属于作用域稀释型。\n【最终得分 -0.07】",
  666. "strategy": "推荐词",
  667. "iteration": 1,
  668. "is_selected": true,
  669. "scoreColor": "#ef4444",
  670. "parentQScore": 0.024
  671. },
  672. "sug_表情包平静发疯_r1_q3_8": {
  673. "type": "sug",
  674. "query": "[SUG] 表情包平静发疯",
  675. "level": 13,
  676. "relevance_score": -0.19000000000000003,
  677. "evaluationReason": "【评估对象】词条\"表情包平静发疯\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作(表情包)\n【动机维度 0.00】原始问题意图是「制作」猫咪表情包梗图,而sug词条「表情包平静发疯」侧重于表达一种表情包的类型或风格,sug词条本身并不包含任何动作意图,因此动机匹配度为0。\n【品类维度 -0.20】原始问题核心对象是“猫咪表情包梗图”,限定词是“制作”。sug词条「表情包平静发疯」中的“表情包”与原始问题核心对象“猫咪表情包”部分匹配,但在“制作”和“猫咪”的限定上存在缺失,且sug词条引入了新的含义“平静发疯”导致语义偏离。\n【延伸词维度 -0.15】sug词条「平静发疯」与原始问题「制作猫咪表情包梗图」的核心目的和对象均不相关,属于无关型延伸词,稀释了原始问题的聚焦度。\n【最终得分 -0.19】\n【规则说明】情况3:sug词条无动作意图,权重调整为 品类80% + 延伸词20%",
  678. "strategy": "推荐词",
  679. "iteration": 1,
  680. "is_selected": true,
  681. "scoreColor": "#ef4444",
  682. "parentQScore": 0.024
  683. },
  684. "sug_表情包评论区自取_r1_q3_9": {
  685. "type": "sug",
  686. "query": "[SUG] 表情包评论区自取",
  687. "level": 13,
  688. "relevance_score": -0.195,
  689. "evaluationReason": "【评估对象】词条\"表情包评论区自取\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 -0.20】原始问题意图是“制作”表情包,而sug词条是“获取”表情包,虽然都与表情包有关,但动作意图相反,是从自身产出到外部获取,属于部分冲突。\n【品类维度 -0.20】原始问题核心对象是《猫咪表情包梗图》,sug词条核心对象是《表情包》。虽有部分重叠,但sug词缺失了关键限定词《猫咪》和细化品类《梗图》。且sug词的场景定位是《评论区自取》,与制作主题偏差较大。\n【延伸词维度 -0.15】原始问题是「制作」猫咪表情包梗图,而sug词条「评论区自取」是获取而非制作,引入了与原始目的相悖的延伸词,稀释了原始问题的聚焦度。\n【最终得分 -0.20】",
  690. "strategy": "推荐词",
  691. "iteration": 1,
  692. "is_selected": true,
  693. "scoreColor": "#ef4444",
  694. "parentQScore": 0.024
  695. },
  696. "q_梗图_r1_4": {
  697. "type": "q",
  698. "query": "[Q] 梗图",
  699. "level": 12,
  700. "relevance_score": 0.15,
  701. "evaluationReason": "",
  702. "strategy": "Query",
  703. "iteration": 1,
  704. "is_selected": true,
  705. "type_label": "",
  706. "domain_index": 3,
  707. "domain_type": "中心名词"
  708. },
  709. "sug_梗图素材_r1_q4_0": {
  710. "type": "sug",
  711. "query": "[SUG] 梗图素材",
  712. "level": 13,
  713. "relevance_score": 0.4,
  714. "evaluationReason": "【评估对象】词条\"梗图素材\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】原始问题的核心动机是「制作」,而sug词条「梗图素材」指向的是「素材」,无明确动作意图,因此动机匹配度为0。\n【品类维度 0.50】原始问题对象层为「猫咪表情包梗图」,场景层为「制作」。sug词条仅包含部分对象层「梗图」,缺失了非常重要的限定词「猫咪表情包」,覆盖度较低,故得分为0.5\n【延伸词维度 0.00】sug词条未引入延伸词,所有词汇均属于原始问题作用域范围。原始问题是“制作猫咪表情包梗图”,其中“梗图”是对象层,“素材”是制作梗图的必要元素,属于对象层范畴。\n【最终得分 0.40】\n【规则说明】情况3:sug词条无动作意图,权重调整为 品类80% + 延伸词20%",
  715. "strategy": "推荐词",
  716. "iteration": 1,
  717. "is_selected": true,
  718. "scoreColor": "#22c55e",
  719. "parentQScore": 0.15
  720. },
  721. "sug_梗图搞笑_r1_q4_1": {
  722. "type": "sug",
  723. "query": "[SUG] 梗图搞笑",
  724. "level": 13,
  725. "relevance_score": 0.17,
  726. "evaluationReason": "【评估对象】词条\"梗图搞笑\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作表情包梗图\n【动机维度 0.00】原始问题意图是「制作」梗图,而sug词条「梗图搞笑」只提及了对象「梗图」及其属性「搞笑」,没有明确的动作意图,因此无法评估动作匹配度。\n【品类维度 0.25】原始问题对象层为“猫咪表情包梗图”,场景层为“制作”。Sug词条对象层为“梗图”,场景层为“搞笑”。Sug词条的主体“梗图”与原始问题主体部分匹配,但缺失了核心限定词“猫咪”和“表情包”,且忽略了制作/搞笑这种目的。\n【延伸词维度 -0.15】原始问题聚焦于「猫咪表情包」的制作方法,而sug词条「梗图搞笑」将范围扩大到所有「梗图」,并引入了「搞笑」这一情感维度,稀释了原始问题对「猫咪」和「制作」的聚焦,属于作用域稀释型。\n【最终得分 0.17】\n【规则说明】情况3:sug词条无动作意图,权重调整为 品类80% + 延伸词20%",
  727. "strategy": "推荐词",
  728. "iteration": 1,
  729. "is_selected": true,
  730. "scoreColor": "#22c55e",
  731. "parentQScore": 0.15
  732. },
  733. "sug_梗图精神状态_r1_q4_2": {
  734. "type": "sug",
  735. "query": "[SUG] 梗图精神状态",
  736. "level": 13,
  737. "relevance_score": -0.19000000000000003,
  738. "evaluationReason": "【评估对象】词条\"梗图精神状态\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作表情包/梗图\n【动机维度 0.00】原始问题动机是“制作表情包/梗图”,sug词条“梗图精神状态”没有体现任何动作意图,因此无法评估动机匹配度。\n【品类维度 -0.20】原始问题核心对象为“猫咪表情包梗图”,sug词条核心对象为“精神状态”,二者对象主体不符,且原始问题限定词“猫咪”未被覆盖。\n【延伸词维度 -0.15】原始问题聚焦于「制作」猫咪表情包梗图的方法,而sug词条「精神状态」引入了与制作方法无关的、新的信息维度,稀释了原始问题的聚焦度,降低了内容的针对性。\n【最终得分 -0.19】\n【规则说明】情况3:sug词条无动作意图,权重调整为 品类80% + 延伸词20%",
  739. "strategy": "推荐词",
  740. "iteration": 1,
  741. "is_selected": true,
  742. "scoreColor": "#ef4444",
  743. "parentQScore": 0.15
  744. },
  745. "sug_谐音梗猜图_r1_q4_3": {
  746. "type": "sug",
  747. "query": "[SUG] 谐音梗猜图",
  748. "level": 13,
  749. "relevance_score": -0.3350000000000001,
  750. "evaluationReason": "【评估对象】词条\"谐音梗猜图\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 -0.20】原始问题意图是「制作」关于猫咪(表情包梗图),sug词条是「猜」关于谐音梗(猜图)。两者动词完全不同,且对象也不同,构成了负向偏差。\n【品类维度 -0.55】原始问题对象层为「猫咪表情包梗图」,限定词为「制作」。sug词条对象层为「谐音梗猜图」。二者在核心对象上完全不匹配,品类冲突。\n【延伸词维度 -0.15】sug词条「谐音梗猜图」与原始问题「猫咪表情包梗图」在主题和目的上完全不符,引入了无关概念,稀释了原始问题的聚焦度,属于作用域稀释型。\n【最终得分 -0.34】\n【规则说明】规则3:核心维度严重负向,上限=0",
  751. "strategy": "推荐词",
  752. "iteration": 1,
  753. "is_selected": true,
  754. "scoreColor": "#ef4444",
  755. "parentQScore": 0.15
  756. },
  757. "sug_梗图meme_r1_q4_4": {
  758. "type": "sug",
  759. "query": "[SUG] 梗图meme",
  760. "level": 13,
  761. "relevance_score": 0.44000000000000006,
  762. "evaluationReason": "【评估对象】词条\"梗图meme\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】sug词条「梗图meme」只提供了动作对象,没有明确的动作意图(如制作、学习),因此无法评估动机匹配度。\n【品类维度 0.55】原始问题对象层为“猫咪表情包梗图”,限定词为“猫咪”和“表情包”。sug词条对象层为“梗图meme”,meme是梗图的英文。匹配对象层“梗图”,但限定词缺失,仅覆盖了部分作用域,且缺少重要的“猫咪”限定。\n【延伸词维度 0.00】sug词条未引入延伸词,所有词汇均属于原始问题作用域范围。'梗图'是原始问题核心对象,'meme'是其同义词,不构成延伸。\n【最终得分 0.44】\n【规则说明】情况3:sug词条无动作意图,权重调整为 品类80% + 延伸词20%",
  763. "strategy": "推荐词",
  764. "iteration": 1,
  765. "is_selected": true,
  766. "scoreColor": "#22c55e",
  767. "parentQScore": 0.15
  768. },
  769. "sug_梗图双人_r1_q4_5": {
  770. "type": "sug",
  771. "query": "[SUG] 梗图双人",
  772. "level": 13,
  773. "relevance_score": -0.27,
  774. "evaluationReason": "【评估对象】词条\"梗图双人\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.00】原始问题核心动机是“制作”,sug词条「梗图双人」无明确的动作意图,因此无法评估动作匹配度。\n【品类维度 -0.30】原始问题对象层为「猫咪表情包梗图」,场景层无。sug词条「梗图双人」虽部分包含「梗图」,但其核心限定词「双人」与原始问题对象及其限定词无明显关联,甚至有所冲突。\n【延伸词维度 -0.15】原始问题聚焦于「猫咪表情包梗图」的制作,而sug词条「双人」引入了与猫咪无关的、新的对象维度,稀释了原始问题的核心焦点,降低了内容的针对性。\n【最终得分 -0.27】\n【规则说明】情况3:sug词条无动作意图,权重调整为 品类80% + 延伸词20%",
  775. "strategy": "推荐词",
  776. "iteration": 1,
  777. "is_selected": true,
  778. "scoreColor": "#ef4444",
  779. "parentQScore": 0.15
  780. },
  781. "sug_梗图抽象_r1_q4_6": {
  782. "type": "sug",
  783. "query": "[SUG] 梗图抽象",
  784. "level": 13,
  785. "relevance_score": 0.034,
  786. "evaluationReason": "【评估对象】词条\"梗图抽象\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】用户想要「制作」表情包梗图\n【动机维度 0.00】原始问题的核心动机是「制作」,而sug词条「梗图抽象」中没有明确的动作意图。\n【品类维度 0.08】原始问题是关于《猫咪表情包梗图》的具体制作,sug词条《梗图抽象》仅包含部分核心名词,且整体是抽象概念,属于过度泛化,缺乏相关限定词,故得分较低分值给分较低。\n【延伸词维度 -0.15】原始问题聚焦于「猫咪表情包梗图」的制作,而sug词条「抽象」引入了与猫咪无关的、更宽泛的梗图类型,稀释了原始问题的聚焦度,降低了内容的针对性。\n【最终得分 0.03】\n【规则说明】情况3:sug词条无动作意图,权重调整为 品类80% + 延伸词20%",
  787. "strategy": "推荐词",
  788. "iteration": 1,
  789. "is_selected": true,
  790. "scoreColor": "#ef4444",
  791. "parentQScore": 0.15
  792. },
  793. "sug_梗图描改_r1_q4_7": {
  794. "type": "sug",
  795. "query": "[SUG] 梗图描改",
  796. "level": 13,
  797. "relevance_score": 0.36,
  798. "evaluationReason": "【评估对象】词条\"梗图描改\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 0.35】原始问题意图是「制作」猫咪表情包梗图。sug词条「梗图描改」包含了「描改」动作,这是一种制作梗图的方法,与原始问题的「制作」意图相关但非完全匹配的具体化动作。\n【品类维度 0.50】原始问题是「猫咪表情包梗图」的制作,sug词条是「梗图描改」。sug词条「梗图」是原始问题核心对象的一部分,匹配度尚可,但缺失了「猫咪表情包」这一重要限定,也没有体现「制作」这个动作,因此得分不高。\n【延伸词维度 -0.15】原始问题聚焦于「猫咪表情包梗图」的制作,而sug词条「描改」作为一种制作方式,与原始问题中的「制作」存在一定关联。但「描改」并未明确指向「猫咪表情包」,且「梗图」的范围过广,稀释了原始问题中「猫咪表情包」这一核心对象,导致sug词条的聚焦度降低。\n【最终得分 0.36】",
  799. "strategy": "推荐词",
  800. "iteration": 1,
  801. "is_selected": true,
  802. "scoreColor": "#22c55e",
  803. "parentQScore": 0.15
  804. },
  805. "sug_梗图分享_r1_q4_8": {
  806. "type": "sug",
  807. "query": "[SUG] 梗图分享",
  808. "level": 13,
  809. "relevance_score": 0.07499999999999998,
  810. "evaluationReason": "【评估对象】词条\"梗图分享\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作\n【动机维度 -0.10】原始问题的核心动机是「制作」,而sug词条「梗图分享」的核心动机是「分享」。两者虽然同属内容处理,但方向相反,制作是输出,分享是传播,因此动机方向有轻度偏离。\n【品类维度 0.35】原始问题对象层为“猫咪表情包梗图”,场景层包含“制作”。sug词条仅包含部分对象层“梗图”,缺失“猫咪表情包”核心主题,也无限定词,覆盖度低,相关性较低。\n【延伸词维度 -0.15】原始问题是关于“制作”猫咪表情包梗图,而sug词条“分享”则引入了新的行为,与制作的核心目的不符,稀释了原始问题的聚焦度。\n【最终得分 0.07】",
  811. "strategy": "推荐词",
  812. "iteration": 1,
  813. "is_selected": true,
  814. "scoreColor": "#ef4444",
  815. "parentQScore": 0.15
  816. },
  817. "sug_梗图模版_r1_q4_9": {
  818. "type": "sug",
  819. "query": "[SUG] 梗图模版",
  820. "level": 13,
  821. "relevance_score": 0.034,
  822. "evaluationReason": "【评估对象】词条\"梗图模版\" vs 原始问题\"如何制作猫咪表情包梗图\"\n【核心动机】制作/生成\n【动机维度 0.00】原始问题核心动机是“制作/生成”猫咪表情包梗图,而sug词条「梗图模版」是名词,无明确的动作意图,无法判断其动机匹配度。\n【品类维度 0.08】原始问题是「猫咪表情包梗图」的制作,对象是特定主体「猫咪表情包梗图」。Sug词条是「梗图模版」,是泛化的「梗图」且多了一个限定词「模版」。虽然sug词条与原始问题都包含「梗图」,但其主体词过于泛化,并非特指猫咪表情包梗图,且添加了「模版」这一限定词,覆盖度低。\n【延伸词维度 -0.15】原始问题是关于「制作猫咪表情包梗图」的方法,核心是制作过程。sug词条「梗图模版」虽然与梗图相关,但它仅提供了制作的素材或工具,而非制作方法本身,且未提及「猫咪」这一核心对象,稀释了原始问题的聚焦度。\n【最终得分 0.03】\n【规则说明】情况3:sug词条无动作意图,权重调整为 品类80% + 延伸词20%",
  823. "strategy": "推荐词",
  824. "iteration": 1,
  825. "is_selected": true,
  826. "scoreColor": "#ef4444",
  827. "parentQScore": 0.15
  828. },
  829. "step_comb_r1": {
  830. "type": "step",
  831. "query": "步骤2: 域内组合 (1个组合)",
  832. "level": 11,
  833. "relevance_score": 0,
  834. "strategy": "域内组词",
  835. "iteration": 1,
  836. "is_selected": true
  837. },
  838. "comb_表情包梗图_r1_0": {
  839. "type": "domain_combination",
  840. "query": "表情包梗图",
  841. "level": 12,
  842. "relevance_score": 0.23399999999999999,
  843. "evaluationReason": "【Round 1 域内评估】\n【评估对象】组合\"表情包梗图\" vs 作用域\"表情包梗图\"\n【品类得分】1.00 - 核心主体和所有关键限定词完全匹配,词条与同一作用域词条完全一致。\n【原始域得分】0.23\n【计算公式】品类得分 × 域得分 = 1.00 × 0.23\n【最终得分】0.23",
  844. "strategy": "域内组合",
  845. "iteration": 1,
  846. "is_selected": true,
  847. "type_label": "[中心名词]",
  848. "source_words": [
  849. [
  850. "表情包",
  851. "梗图"
  852. ]
  853. ],
  854. "from_segments": [
  855. "表情包梗图"
  856. ],
  857. "domains": [
  858. 3
  859. ],
  860. "domains_str": "D3",
  861. "source_word_details": [
  862. {
  863. "domain_index": 3,
  864. "segment_type": "中心名词",
  865. "segment_text": "表情包梗图",
  866. "words": [
  867. {
  868. "text": "表情包",
  869. "score": 0.024
  870. },
  871. {
  872. "text": "梗图",
  873. "score": 0.15
  874. }
  875. ]
  876. }
  877. ],
  878. "source_scores": [
  879. 0.024,
  880. 0.15
  881. ],
  882. "is_above_sources": true,
  883. "max_source_score": 0.15,
  884. "scoreColor": "#22c55e"
  885. },
  886. "step_search_r1": {
  887. "type": "step",
  888. "query": "步骤3: 筛选并执行搜索 (筛选2个高分词,搜索2次,undefined个帖子)",
  889. "level": 11,
  890. "relevance_score": 0,
  891. "strategy": "筛选并执行搜索",
  892. "iteration": 1,
  893. "is_selected": true
  894. },
  895. "search_制作表情包_r1_0": {
  896. "type": "search_word",
  897. "query": "[SEARCH] 制作表情包",
  898. "level": 12,
  899. "relevance_score": 0.83,
  900. "strategy": "搜索词",
  901. "iteration": 1,
  902. "is_selected": true
  903. },
  904. "post_66f9046a000000002a033202_0_0": {
  905. "type": "post",
  906. "query": "[R] 微信自制表情教程",
  907. "level": 13,
  908. "relevance_score": 0,
  909. "strategy": "帖子",
  910. "iteration": 1,
  911. "is_selected": true,
  912. "note_id": "66f9046a000000002a033202",
  913. "note_url": "https://www.xiaohongshu.com/explore/66f9046a000000002a033202",
  914. "body_text": "[拔草R]方法一:搜索即所得(图1-5) 用已有的表情包配上定制的文字,省心又省力[赞R] [拔草R]方法二:图库加表情",
  915. "images": [
  916. "https://ci.xiaohongshu.com/1040g008318as11gc445g4be7ut8lflqs4df9uh8?imageView2/2/w/1080/format/webp",
  917. "https://ci.xiaohongshu.com/1040g008318as11gc44504be7ut8lflqskgfuu80?imageView2/2/w/1080/format/webp",
  918. "https://ci.xiaohongshu.com/1040g008318as11gc44004be7ut8lflqsai35qm8?imageView2/2/w/1080/format/webp",
  919. "https://ci.xiaohongshu.com/1040g008318as11gc444g4be7ut8lflqshvdu428?imageView2/2/w/1080/format/webp",
  920. "https://ci.xiaohongshu.com/1040g008318as11gc446g4be7ut8lflqslatfn98?imageView2/2/w/1080/format/webp",
  921. "https://ci.xiaohongshu.com/1040g008318as11gc44304be7ut8lflqsg8kajfo?imageView2/2/w/1080/format/webp",
  922. "https://ci.xiaohongshu.com/1040g008318as11gc442g4be7ut8lflqs3rko7p0?imageView2/2/w/1080/format/webp",
  923. "https://ci.xiaohongshu.com/1040g008318as11gc44204be7ut8lflqsdnoccuo?imageView2/2/w/1080/format/webp",
  924. "https://ci.xiaohongshu.com/1040g008318as11gc441g4be7ut8lflqsq87bfm0?imageView2/2/w/1080/format/webp",
  925. "https://ci.xiaohongshu.com/1040g008318as11gc44404be7ut8lflqsj8g29qo?imageView2/2/w/1080/format/webp"
  926. ],
  927. "image_list": [
  928. {
  929. "image_url": "https://ci.xiaohongshu.com/1040g008318as11gc445g4be7ut8lflqs4df9uh8?imageView2/2/w/1080/format/webp"
  930. },
  931. {
  932. "image_url": "https://ci.xiaohongshu.com/1040g008318as11gc44504be7ut8lflqskgfuu80?imageView2/2/w/1080/format/webp"
  933. },
  934. {
  935. "image_url": "https://ci.xiaohongshu.com/1040g008318as11gc44004be7ut8lflqsai35qm8?imageView2/2/w/1080/format/webp"
  936. },
  937. {
  938. "image_url": "https://ci.xiaohongshu.com/1040g008318as11gc444g4be7ut8lflqshvdu428?imageView2/2/w/1080/format/webp"
  939. },
  940. {
  941. "image_url": "https://ci.xiaohongshu.com/1040g008318as11gc446g4be7ut8lflqslatfn98?imageView2/2/w/1080/format/webp"
  942. },
  943. {
  944. "image_url": "https://ci.xiaohongshu.com/1040g008318as11gc44304be7ut8lflqsg8kajfo?imageView2/2/w/1080/format/webp"
  945. },
  946. {
  947. "image_url": "https://ci.xiaohongshu.com/1040g008318as11gc442g4be7ut8lflqs3rko7p0?imageView2/2/w/1080/format/webp"
  948. },
  949. {
  950. "image_url": "https://ci.xiaohongshu.com/1040g008318as11gc44204be7ut8lflqsdnoccuo?imageView2/2/w/1080/format/webp"
  951. },
  952. {
  953. "image_url": "https://ci.xiaohongshu.com/1040g008318as11gc441g4be7ut8lflqsq87bfm0?imageView2/2/w/1080/format/webp"
  954. },
  955. {
  956. "image_url": "https://ci.xiaohongshu.com/1040g008318as11gc44404be7ut8lflqsj8g29qo?imageView2/2/w/1080/format/webp"
  957. }
  958. ],
  959. "interact_info": {
  960. "liked_count": 3287,
  961. "collected_count": 1285,
  962. "comment_count": 201,
  963. "shared_count": 1265
  964. },
  965. "extraction": null,
  966. "is_knowledge": true,
  967. "knowledge_reason": "",
  968. "knowledge_score": 93,
  969. "knowledge_level": null,
  970. "knowledge_evaluation": {
  971. "quick_exclude": {
  972. "result": "通过",
  973. "reason": "内容不涉及情感表达、生活记录、娱乐、营销或虚假信息。"
  974. },
  975. "title_layer": {
  976. "has_knowledge_direction": true,
  977. "reason": "标题明确指明了“教程”,指向了方法性知识的学习。"
  978. },
  979. "image_layer": {
  980. "knowledge_presentation": {
  981. "match": true,
  982. "reason": "图片包含清晰的步骤标注,通过序列图展示了操作方法,具备知识性标注。"
  983. },
  984. "educational_value": {
  985. "has_value": true,
  986. "reason": "图片通过分步骤的教学,能够教会用户如何制作微信表情,提供了可学习的技能。"
  987. },
  988. "structure_level": {
  989. "structured": true,
  990. "reason": "图片以“第一步”、“第二步”等序号形式组织,逻辑清晰,结构化程度高。"
  991. },
  992. "practicality": {
  993. "practical": true,
  994. "reason": "内容提供了直接操作的步骤,用户看完可以依葫芦画瓢制作表情,具有很强的实用性。"
  995. },
  996. "information_density": {
  997. "level": "中",
  998. "reason": "包含了两种制作表情的方法,每种方法又分解为多个具体步骤。"
  999. },
  1000. "overall": "传递知识"
  1001. },
  1002. "text_layer": {
  1003. "information_gain": {
  1004. "has_gain": true,
  1005. "reason": "正文简要概括了两种制作表情的方法,对图片教学内容起到补充和引导作用,提供了新方法。"
  1006. },
  1007. "verifiability": {
  1008. "verifiable": true,
  1009. "reason": "内容描述的是微信表情的制作方法,是可验证的操作步骤。"
  1010. },
  1011. "knowledge_type": {
  1012. "type": "方法性知识, 应用性知识",
  1013. "reason": "内容提供了微信表情的制作步骤和操作方法,属于方法性知识,且能直接应用于微信表情的制作,具备应用性。"
  1014. },
  1015. "overall": "有知识支撑"
  1016. },
  1017. "judgment_logic": "该帖子通过了快速排除,标题明确指向知识,图片层以结构化的步骤图清晰地传递了方法,具有很高的教育和实用价值。正文作为辅助也提供了明确的方法性知识。综合判定满足“是知识”的所有条件。",
  1018. "core_evidence": [
  1019. "图片以“第一步”、“第二步”等形式清晰展示了微信表情的制作流程。",
  1020. "Ttitle“微信自制表情教程”明确指出这是一篇教学指导内容,属于方法性知识。",
  1021. "正文简要概括了两种方法,与图片内容相互印证,提供了具体的解决方案。"
  1022. ],
  1023. "issues": [],
  1024. "conclusion": "该社交媒体帖子是知识。它提供了一套完整的微信表情制作教程,通过图片和文字详细阐述了操作步骤和方法,具有明确的方法性和应用性知识价值。"
  1025. },
  1026. "post_relevance_score": null,
  1027. "relevance_level": "",
  1028. "relevance_reason": "",
  1029. "relevance_conclusion": "",
  1030. "relevance_evaluation": null,
  1031. "is_content_knowledge": true,
  1032. "purpose_score": 75,
  1033. "category_score": 50,
  1034. "final_score": 67.5,
  1035. "match_level": "部分匹配",
  1036. "evaluator_version": "v3.0",
  1037. "content_knowledge_evaluation": {
  1038. "is_content_knowledge": true,
  1039. "final_score": 93,
  1040. "level": "⭐⭐⭐⭐⭐ 优质内容知识",
  1041. "quick_exclude": {
  1042. "result": "否",
  1043. "reason": "内容提供了明确的教程步骤,并非纯展示型内容,也非单点元素或单次操作。"
  1044. },
  1045. "dimension_scores": {
  1046. "image_layer": {
  1047. "creation_method": {
  1048. "score": 20,
  1049. "reason": "图片清晰展示了两种制作微信表情的具体方法(搜索合成表情、从图库选择制作表情),每种方法都有明确的步骤指引。"
  1050. },
  1051. "knowledge_system": {
  1052. "score": 15,
  1053. "reason": "多图形成完整的知识体系,每种方法都以1-2-3-4-5的步骤进行呈现,逻辑清晰。"
  1054. },
  1055. "teaching_annotation": {
  1056. "score": 15,
  1057. "reason": "图片包含大量的教学标注,如“第一步”、“点击表情选项”等文字说明,以及红圈高亮和气泡框,清晰易懂。"
  1058. },
  1059. "method_reusability": {
  1060. "score": 10,
  1061. "reason": "图片展示的方法是微信表情制作的通用功能教程,适用于所有微信用户,具有高度的可复用性。"
  1062. },
  1063. "principle_case": {
  1064. "score": 10,
  1065. "reason": "教程中结合了实际操作界面和具体的步骤指导,有效地将制作方法与实践结合。"
  1066. },
  1067. "subtotal": 70
  1068. },
  1069. "text_layer": {
  1070. "method_description": {
  1071. "score": 10,
  1072. "reason": "正文简要介绍了两种制作表情的方法,与图片内容相互印证,提供了清晰的指引。"
  1073. },
  1074. "knowledge_summary": {
  1075. "score": 8,
  1076. "reason": "正文虽然没有复杂的理论总结,但通过“省心又省力”等描述,对不同方法的优劣进行了简要总结,提炼了用户体验的要点。"
  1077. },
  1078. "subtotal": 18
  1079. },
  1080. "title_layer": {
  1081. "content_direction": {
  1082. "score": 5,
  1083. "reason": "标题“微信自制表情教程”明确包含了“教程”一词,直接指明了内容是关于制作方法的知识。但由于没有明确的“创作”、“设计”等创作领域词汇,所以给5分。"
  1084. },
  1085. "subtotal": 5
  1086. }
  1087. },
  1088. "core_evidence": [
  1089. "标题明确指出为“教程”类内容。",
  1090. "图片通过大量文字标注和红圈高亮,详细展示了两种微信表情制作方法(搜索合成表情、图库照片制作表情)的步骤。",
  1091. "图片以清晰的步骤流程(第一步、第二步等)呈现知识,具备很强的教学性。",
  1092. "正文对两种方法进行了简要概述,与图片内容一致。"
  1093. ],
  1094. "issues": [],
  1095. "summary": "该帖子提供了详细的微信表情制作教程,图片教学清晰,步骤明确,具有高度的可操作性和可复用性。标题和正文也明确指向了方法教学,属于典型的优质内容知识。"
  1096. },
  1097. "purpose_evaluation": {
  1098. "purpose_score": 75,
  1099. "core_motivation": "用户想要学习如何制作关于猫咪的表情包梗图。",
  1100. "image_value": "图片清晰地展示了两种制作微信表情包的教程步骤,包括如何利用已有表情包加文字和如何用图库图片制作表情包。虽然没有直接展示猫咪表情包梗图,但提供了制作表情包的通用方法,且方法二可以用于制作任何主题的表情包。",
  1101. "title_intention": "标题明确说明了是“微信自制表情教程”,与制作表情包的意图相符。",
  1102. "text_content": "正文补充了两种制作表情包的方法,并通过“图1-5”和“图库加表情”引导用户查看图片教程,提供了具体的制作步骤。",
  1103. "match_level": "基本匹配",
  1104. "core_basis": "帖子提供了制作表情包的完整教程,图片步骤清晰,虽然没有直接展示“猫咪表情包梗图”,但“制作”的动机被通用教程满足,且方法二可以由用户自行选择猫咪图片进行制作。"
  1105. },
  1106. "category_evaluation": {
  1107. "category_score": 50,
  1108. "original_category": {
  1109. "核心主体": "表情包",
  1110. "关键限定词": [
  1111. "猫咪",
  1112. "梗图",
  1113. "制作"
  1114. ]
  1115. },
  1116. "actual_category": {
  1117. "图片主体": "表情包制作教程",
  1118. "图片限定特征": [
  1119. "微信",
  1120. "合成表情",
  1121. "自定义表情"
  1122. ],
  1123. "标题品类": "微信自制表情教程",
  1124. "正文品类": "表情包制作方法"
  1125. },
  1126. "match_level": "中度相关",
  1127. "subject_match": "主体是“表情包制作”,与需求中的“制作表情包”主体一致。",
  1128. "qualifier_match": "需求限定词“猫咪”和“梗图”未匹配。帖子图片和文字内容未体现猫咪或梗图的制作,而是通用表情包制作。",
  1129. "core_basis": "帖子图片展示的是微信表情包的制作流程,虽然核心主体“表情包制作”符合,但需求中明确限定了“猫咪”和“梗图”这两种具体类型,帖子内容并未体现这些限定,因此中度相关。"
  1130. }
  1131. },
  1132. "post_668e06cd00000000250145fe_0_1": {
  1133. "type": "post",
  1134. "query": "[R] 如何把照片变成表情包!",
  1135. "level": 13,
  1136. "relevance_score": 0,
  1137. "strategy": "帖子",
  1138. "iteration": 1,
  1139. "is_selected": true,
  1140. "note_id": "668e06cd00000000250145fe",
  1141. "note_url": "https://www.xiaohongshu.com/explore/668e06cd00000000250145fe",
  1142. "body_text": "微信-我的-表情-设置-添加单个表情-添加 只能一个一个添加哦 #表情管理 #我是表情包 #每日表情包分享 #手机",
  1143. "images": [
  1144. "https://ci.xiaohongshu.com/1040g2sg3151cqcmp0k5g5ph1r8choq4phkf6g9o?imageView2/2/w/1080/format/webp",
  1145. "https://ci.xiaohongshu.com/1040g2sg3151cqcmp0k505ph1r8choq4pe27ihoo?imageView2/2/w/1080/format/webp",
  1146. "https://ci.xiaohongshu.com/1040g2sg3151cqcmp0k4g5ph1r8choq4pvpkd1ro?imageView2/2/w/1080/format/webp",
  1147. "https://ci.xiaohongshu.com/1040g2sg3151cqcmp0k2g5ph1r8choq4pmbjtuqo?imageView2/2/w/1080/format/webp"
  1148. ],
  1149. "image_list": [
  1150. {
  1151. "image_url": "https://ci.xiaohongshu.com/1040g2sg3151cqcmp0k5g5ph1r8choq4phkf6g9o?imageView2/2/w/1080/format/webp"
  1152. },
  1153. {
  1154. "image_url": "https://ci.xiaohongshu.com/1040g2sg3151cqcmp0k505ph1r8choq4pe27ihoo?imageView2/2/w/1080/format/webp"
  1155. },
  1156. {
  1157. "image_url": "https://ci.xiaohongshu.com/1040g2sg3151cqcmp0k4g5ph1r8choq4pvpkd1ro?imageView2/2/w/1080/format/webp"
  1158. },
  1159. {
  1160. "image_url": "https://ci.xiaohongshu.com/1040g2sg3151cqcmp0k2g5ph1r8choq4pmbjtuqo?imageView2/2/w/1080/format/webp"
  1161. }
  1162. ],
  1163. "interact_info": {
  1164. "liked_count": 1424,
  1165. "collected_count": 721,
  1166. "comment_count": 108,
  1167. "shared_count": 391
  1168. },
  1169. "extraction": null,
  1170. "is_knowledge": true,
  1171. "knowledge_reason": "",
  1172. "knowledge_score": 83,
  1173. "knowledge_level": null,
  1174. "knowledge_evaluation": {
  1175. "quick_exclude": {
  1176. "result": "通过",
  1177. "reason": "内容不属于纯情感表达、作品展示、娱乐搞笑、虚假信息或纯重复常识。"
  1178. },
  1179. "title_layer": {
  1180. "has_knowledge_direction": true,
  1181. "reason": "标题明确指出了如何操作,指向了方法性知识。"
  1182. },
  1183. "image_layer": {
  1184. "knowledge_presentation": {
  1185. "match": true,
  1186. "reason": "图片序列清晰地展示了操作步骤,有红色圈出关键位置进行提示。"
  1187. },
  1188. "educational_value": {
  1189. "has_value": true,
  1190. "reason": "图片教会了用户如何将照片添加到微信表情,提供了可学习的操作步骤。"
  1191. },
  1192. "structure_level": {
  1193. "structured": true,
  1194. "reason": "图片按顺序展示了操作流程,具有清晰的步骤结构。"
  1195. },
  1196. "practicality": {
  1197. "practical": true,
  1198. "reason": "提供了直接可应用的操作指南,解决了用户将照片制成表情包的实际问题。"
  1199. },
  1200. "information_density": {
  1201. "level": "中",
  1202. "reason": "包含通过微信添加自定义表情的关键步骤,每一步都算一个知识点。"
  1203. },
  1204. "overall": "传递知识"
  1205. },
  1206. "text_layer": {
  1207. "information_gain": {
  1208. "has_gain": true,
  1209. "reason": "正文提供了微信添加表情包的具体步骤,对于不熟悉的用户而言是新信息。"
  1210. },
  1211. "verifiability": {
  1212. "verifiable": true,
  1213. "reason": "描述的是微信应用的具体操作,可以通过亲身实践验证其真实性。"
  1214. },
  1215. "knowledge_type": {
  1216. "type": "方法性知识",
  1217. "reason": "提供的是将照片转化为表情包的具体操作流程和步骤。"
  1218. },
  1219. "overall": "有知识支撑"
  1220. },
  1221. "judgment_logic": "通过快速排除,标题明确指向方法论,图片层清晰展示了具体操作步骤和截图指示,正文层也补充了关键步骤信息。内容提供了可验证、可学习的实用方法性知识,符合知识判定标准。",
  1222. "core_evidence": [
  1223. "标题“如何把照片变成表情包!”明确指引知识方向。",
  1224. "图片序列清晰展示了从“我”到“表情”再到“添加单个表情”的完整、可操作的步骤,关键路径有红色圈注。",
  1225. "正文简明扼要地概括了操作路径,与图片内容相互印证,提供了具体的行动指南。"
  1226. ],
  1227. "issues": [],
  1228. "conclusion": "该帖子提供了明确的方法性知识,通过图片和文字结合的方式,详细教学了如何将照片添加为微信表情,具有实际应用价值。"
  1229. },
  1230. "post_relevance_score": null,
  1231. "relevance_level": "",
  1232. "relevance_reason": "",
  1233. "relevance_conclusion": "",
  1234. "relevance_evaluation": null,
  1235. "is_content_knowledge": true,
  1236. "purpose_score": 45,
  1237. "category_score": 25,
  1238. "final_score": 39,
  1239. "match_level": "弱匹配",
  1240. "evaluator_version": "v3.0",
  1241. "content_knowledge_evaluation": {
  1242. "is_content_knowledge": true,
  1243. "final_score": 83,
  1244. "level": "⭐⭐⭐⭐ 良好内容知识",
  1245. "quick_exclude": {
  1246. "result": "否",
  1247. "reason": "内容提供了明确的操作步骤,非纯展示,有通用性"
  1248. },
  1249. "dimension_scores": {
  1250. "image_layer": {
  1251. "creation_method": {
  1252. "score": 20,
  1253. "reason": "图片清晰展示了从微信入口到添加表情的详细步骤,有明确的操作指引。"
  1254. },
  1255. "knowledge_system": {
  1256. "score": 15,
  1257. "reason": "多图形成完整的步骤体系(1→2→3→4),逻辑清晰。"
  1258. },
  1259. "teaching_annotation": {
  1260. "score": 15,
  1261. "reason": "图片中使用了大量的红色圆圈标注,清晰引导用户操作。"
  1262. },
  1263. "method_reusability": {
  1264. "score": 8,
  1265. "reason": "添加表情包的方法具有一定的通用性,可应用于不同类型的图片转表情包场景,但并不涉及创作原理或设计模板。"
  1266. },
  1267. "principle_case": {
  1268. "score": 5,
  1269. "reason": "图片主要展示操作方法,未提炼或强调背后的创作原理,但有案例辅助操作。"
  1270. },
  1271. "subtotal": 63
  1272. },
  1273. "text_layer": {
  1274. "method_description": {
  1275. "score": 10,
  1276. "reason": "正文描述了详细的操作步骤:微信-我的-表情-设置-添加单个表情-添加。"
  1277. },
  1278. "knowledge_summary": {
  1279. "score": 0,
  1280. "reason": "正文主要为操作步骤,没有对创作经验或规律进行总结提炼。"
  1281. },
  1282. "subtotal": 10
  1283. },
  1284. "title_layer": {
  1285. "content_direction": {
  1286. "score": 10,
  1287. "reason": "标题“如何把照片变成表情包!”明确包含“如何XX”这种指向方法的词汇。"
  1288. },
  1289. "subtotal": 10
  1290. }
  1291. },
  1292. "core_evidence": [
  1293. "标题明确指向“如何XX”的方法教学",
  1294. "图片通过红色圆圈清晰地标注了每一步操作",
  1295. "正文提供了详细的文字操作流程",
  1296. "整个内容呈现了将照片转化为表情包的完整、可复用的操作流程"
  1297. ],
  1298. "issues": [
  1299. "内容更偏向于工具使用教学,而非创作原理或设计技巧",
  1300. "缺乏对创作经验、规律的总结和提炼"
  1301. ],
  1302. "summary": "该帖子提供了将照片转化为表情包的详细操作教程,图片和正文都清晰展示了每一步骤,具有很强的实用性和可操作性。虽然缺乏创作原理的深层讲解和归纳,但作为工具使用类的“制作方法”知识,整体符合内容知识的定义。"
  1303. },
  1304. "purpose_evaluation": {
  1305. "purpose_score": 45,
  1306. "core_motivation": "用户想学习如何将猫咪照片制作成表情包梗图的创作方法。",
  1307. "image_value": "图片展示了在微信中添加单个表情的步骤,并没有展示如何制作猫咪表情包梗图,与猫咪和梗图制作的概念无关。",
  1308. "title_intention": "标题“如何把照片变成表情包!”与用户制作表情包的意图有部分关联,但未提及猫咪或梗图,且实际内容是关于微信导入表情的操作,而非制作。",
  1309. "text_content": "正文提供了微信里添加单个表情的简要操作路径,即导入已有照片作为表情。这与“制作”梗图有所不同,且未提及“猫咪”和“梗图”的制作方法。",
  1310. "match_level": "弱匹配",
  1311. "core_basis": "原始需求是要“制作猫咪表情包梗图”,这是创作型动机,需要生成教程。帖子提供的图片和文字只介绍了在微信中“导入”照片作为表情,并未涉及如何将照片创意性地制作成“梗图”,也未提及“猫咪”主题。因此,虽然有“表情包”的关键词,但核心的创作动机——如何制作梗图,完全未被满足。"
  1312. },
  1313. "category_evaluation": {
  1314. "category_score": 25,
  1315. "original_category": {
  1316. "核心主体": "表情包",
  1317. "关键限定词": [
  1318. "猫咪",
  1319. "梗图",
  1320. "制作"
  1321. ]
  1322. },
  1323. "actual_category": {
  1324. "图片主体": "微信表情设置界面、表情商店界面、已添加单个表情界面",
  1325. "图片限定特征": [
  1326. "手机界面",
  1327. "功能引导"
  1328. ],
  1329. "标题品类": "表情包制作",
  1330. "正文品类": "表情包添加教程"
  1331. },
  1332. "match_level": "不匹配",
  1333. "subject_match": "帖子内容主体是“表情包添加方法”,而需求是“猫咪表情包梗图的制作方法”,两者核心主体(如何得到表情包)相同,但制作方法和添加方法是不同的品类。",
  1334. "qualifier_match": "“猫咪”和“梗图”是关于表情包的具体限定词,在帖子中均未体现,图片也没有展示任何猫咪或梗图相关的表情包。",
  1335. "core_basis": "原始需求是关于“制作”特定类型的表情包(猫咪梗图),而帖子内容是关于“添加”已有的表情包(微信功能操作)。图片直接展示的是微信操作界面,与猫咪梗图制作完全不符。核心主体虽都与“表情包”相关,但“制作”与“添加”分属不同品类,且需求中的限定词(猫咪、梗图)均未匹配。"
  1336. }
  1337. },
  1338. "post_671d9a72000000001402e50f_0_2": {
  1339. "type": "post",
  1340. "query": "[R] 小红书自制表情包!",
  1341. "level": 13,
  1342. "relevance_score": 0,
  1343. "strategy": "帖子",
  1344. "iteration": 1,
  1345. "is_selected": true,
  1346. "note_id": "671d9a72000000001402e50f",
  1347. "note_url": "https://www.xiaohongshu.com/explore/671d9a72000000001402e50f",
  1348. "body_text": "[飞吻R][飞吻R][飞吻R]#表情包制作 #小表情包 #表情包教程 #来更新了 [飞吻R][飞吻R][飞吻R",
  1349. "images": [
  1350. "https://ci.xiaohongshu.com/1040g008319ejb3iv6a005nho0ea09dlcbau3dkg?imageView2/2/w/1080/format/webp",
  1351. "https://ci.xiaohongshu.com/1040g008319ejb3iv6a0g5nho0ea09dlcifm9qng?imageView2/2/w/1080/format/webp",
  1352. "https://ci.xiaohongshu.com/1040g008319ejb3iv6a105nho0ea09dlcnmflne8?imageView2/2/w/1080/format/webp",
  1353. "https://ci.xiaohongshu.com/1040g008319ejb3iv6a1g5nho0ea09dlciseqgb8?imageView2/2/w/1080/format/webp",
  1354. "https://ci.xiaohongshu.com/1040g008319ejb3iv6a205nho0ea09dlcspj4d9o?imageView2/2/w/1080/format/webp",
  1355. "https://ci.xiaohongshu.com/1040g008319ejb3iv6a2g5nho0ea09dlcu4ac7dg?imageView2/2/w/1080/format/webp",
  1356. "https://ci.xiaohongshu.com/1040g008319ejb3iv6a305nho0ea09dlcr70th0g?imageView2/2/w/1080/format/webp"
  1357. ],
  1358. "image_list": [
  1359. {
  1360. "image_url": "https://ci.xiaohongshu.com/1040g008319ejb3iv6a005nho0ea09dlcbau3dkg?imageView2/2/w/1080/format/webp"
  1361. },
  1362. {
  1363. "image_url": "https://ci.xiaohongshu.com/1040g008319ejb3iv6a0g5nho0ea09dlcifm9qng?imageView2/2/w/1080/format/webp"
  1364. },
  1365. {
  1366. "image_url": "https://ci.xiaohongshu.com/1040g008319ejb3iv6a105nho0ea09dlcnmflne8?imageView2/2/w/1080/format/webp"
  1367. },
  1368. {
  1369. "image_url": "https://ci.xiaohongshu.com/1040g008319ejb3iv6a1g5nho0ea09dlciseqgb8?imageView2/2/w/1080/format/webp"
  1370. },
  1371. {
  1372. "image_url": "https://ci.xiaohongshu.com/1040g008319ejb3iv6a205nho0ea09dlcspj4d9o?imageView2/2/w/1080/format/webp"
  1373. },
  1374. {
  1375. "image_url": "https://ci.xiaohongshu.com/1040g008319ejb3iv6a2g5nho0ea09dlcu4ac7dg?imageView2/2/w/1080/format/webp"
  1376. },
  1377. {
  1378. "image_url": "https://ci.xiaohongshu.com/1040g008319ejb3iv6a305nho0ea09dlcr70th0g?imageView2/2/w/1080/format/webp"
  1379. }
  1380. ],
  1381. "interact_info": {
  1382. "liked_count": 653,
  1383. "collected_count": 403,
  1384. "comment_count": 1920,
  1385. "shared_count": 104
  1386. },
  1387. "extraction": null,
  1388. "is_knowledge": true,
  1389. "knowledge_reason": "",
  1390. "knowledge_score": 89,
  1391. "knowledge_level": null,
  1392. "knowledge_evaluation": {
  1393. "quick_exclude": {
  1394. "result": "通过",
  1395. "reason": "内容不属于纯情感表达、作品展示、娱乐搞笑、虚假信息或纯重复常识。"
  1396. },
  1397. "title_layer": {
  1398. "has_knowledge_direction": true,
  1399. "reason": "标题明确指出了“小红书自制表情包”,暗示了制作方法或教程,具有知识指向。"
  1400. },
  1401. "image_layer": {
  1402. "knowledge_presentation": {
  1403. "match": true,
  1404. "reason": "图片通过步骤序列(从打字键盘到选择图片再到完成)展示了表情包的制作流程,使用了指示箭头和文字标注。"
  1405. },
  1406. "educational_value": {
  1407. "has_value": true,
  1408. "reason": "图片清晰地教会了用户如何在小红书上自制表情包,提供了明确的操作步骤。"
  1409. },
  1410. "structure_level": {
  1411. "structured": true,
  1412. "reason": "图片以分步截图的形式呈现,有清晰的逻辑顺序和操作指引。"
  1413. },
  1414. "practicality": {
  1415. "practical": true,
  1416. "reason": "提供了直接的应用方法,用户可以按照图片教程在小红书上制作自己的表情包。"
  1417. },
  1418. "information_density": {
  1419. "level": "高",
  1420. "reason": "包含了多个操作步骤,每个步骤都是一个具体的知识点,组合起来形成一个完整的方法论。"
  1421. },
  1422. "overall": "传递知识"
  1423. },
  1424. "text_layer": {
  1425. "information_gain": {
  1426. "has_gain": true,
  1427. "reason": "提供了如何在小红书上自制表情包的具体操作指南,对于不了解的用户而言是新信息。"
  1428. },
  1429. "verifiability": {
  1430. "verifiable": true,
  1431. "reason": "内容基于小红书平台的实际操作流程,是可验证的经验和方法。"
  1432. },
  1433. "knowledge_type": {
  1434. "type": "方法性知识",
  1435. "reason": "详细描述了制作表情包的步骤和操作方法,属于方法性知识。"
  1436. },
  1437. "overall": "有知识支撑"
  1438. },
  1439. "judgment_logic": "通过快速排除,并且图片层和正文层都传递了知识。图片层以详细的步骤教学形式清晰地展现了方法性知识,具有高度的教育价值和实用性。正文虽然简短,但与图片内容高度协同,共同构成了一个完整的知识传授过程。",
  1440. "core_evidence": [
  1441. "图片以连续的UI截图和标注清晰地展示了“小红书自制表情包”的操作流程,是典型的方法性知识。",
  1442. "图片内容结构化程度高,有明确的步骤指导,能帮助用户学习并应用。",
  1443. "标题和正文的标签都指向了“表情包制作技巧”,与图片内容形成互补,增强了知识传达的完整性。"
  1444. ],
  1445. "issues": [],
  1446. "conclusion": "该帖子是知识。内容通过图片层详细、结构化的步骤教学,提供了如何在小红书上自制表情包的方法,具有明确的实用性和学习价值,属于方法性知识。"
  1447. },
  1448. "post_relevance_score": null,
  1449. "relevance_level": "",
  1450. "relevance_reason": "",
  1451. "relevance_conclusion": "",
  1452. "relevance_evaluation": null,
  1453. "is_content_knowledge": true,
  1454. "purpose_score": 70,
  1455. "category_score": 45,
  1456. "final_score": 62.5,
  1457. "match_level": "部分匹配",
  1458. "evaluator_version": "v3.0",
  1459. "content_knowledge_evaluation": {
  1460. "is_content_knowledge": true,
  1461. "final_score": 89,
  1462. "level": "⭐⭐⭐⭐⭐ 优质内容知识",
  1463. "quick_exclude": {
  1464. "result": "否",
  1465. "reason": "内容提供了清晰的制作步骤和教程"
  1466. },
  1467. "dimension_scores": {
  1468. "image_layer": {
  1469. "creation_method": {
  1470. "score": 20,
  1471. "reason": "图片详细展示了创建表情包的每一步骤,从打字界面、点击添加按钮、选择图片到最终完成,具有明确的操作指引。"
  1472. },
  1473. "knowledge_system": {
  1474. "score": 15,
  1475. "reason": "多图形成完整的知识体系,按照步骤1-2-3-4-5的逻辑清晰展示了表情包的制作流程。"
  1476. },
  1477. "teaching_annotation": {
  1478. "score": 15,
  1479. "reason": "图片中包含了大量的教学标注,如“先打键盘”、“点这个”、“选择你要的图片”、“选完后点这个”,并使用了箭头和高亮提示,清晰易懂。"
  1480. },
  1481. "method_reusability": {
  1482. "score": 10,
  1483. "reason": "所展示的表情包制作方法是通用步骤,适用于在小红书平台制作任何自定义表情包,具有很强的可复用性。"
  1484. },
  1485. "principle_case": {
  1486. "score": 10,
  1487. "reason": "虽然主要是制作方法,但结合了小红书实际界面作为案例,清晰展示了方法如何在实践中应用。"
  1488. },
  1489. "subtotal": 70
  1490. },
  1491. "text_layer": {
  1492. "method_description": {
  1493. "score": 9,
  1494. "reason": "正文虽然简单,但通过标签'#表情包教程'明确指出内容是方法教程,与图片内容高度契合。"
  1495. },
  1496. "knowledge_summary": {
  1497. "score": 0,
  1498. "reason": "正文主要是标签和表情符号,没有额外的知识总结或提炼。"
  1499. },
  1500. "subtotal": 9
  1501. },
  1502. "title_layer": {
  1503. "content_direction": {
  1504. "score": 10,
  1505. "reason": "标题“小红书自制表情包!”明确指向制作方法和教程,具有清晰的创作内容指向性。"
  1506. },
  1507. "subtotal": 10
  1508. }
  1509. },
  1510. "core_evidence": [
  1511. "图片通过多步截图详细展示了在小红书APP中制作自定义表情包的整个流程。",
  1512. "图片中包含大量教学性标注(如箭头、文字指示),引导用户完成操作。",
  1513. "标题和相关话题标签明确指明这是一个关于表情包制作的教程/方法。",
  1514. "所提供的方法具有通用性,可应用于其他表情包制作场景。"
  1515. ],
  1516. "issues": [
  1517. "正文部分内容较少,未对教学内容进行额外的文字总结或深化。"
  1518. ],
  1519. "summary": "该帖子提供了在小红书制作自定义表情包的详细步骤和教程。图片清晰地展示了操作流程,并配有丰富的教学标注,标题和标签也明确指出了其教程属性。整个内容具有很强的实操性和通用性,是优质的内容知识。"
  1520. },
  1521. "purpose_evaluation": {
  1522. "purpose_score": 70,
  1523. "core_motivation": "用户想学习如何制作猫咪表情包梗图。",
  1524. "image_value": "图片展示了在小红书中制作表情包的步骤教程,包括如何找到制作功能、选择图片、以及最终生成表情包的界面。基本涵盖了“制作”的核心流程,但只针对小红书平台通用表情包制作,未具体到“猫咪表情包梗图”。",
  1525. "title_intention": "标题“小红书自制表情包!”明确了内容是关于在小红书平台制作表情包的教程。",
  1526. "text_content": "正文使用了“#表情包制作 #小表情包 #表情包教程”等标签,强调了这是一个制作表情包的教程,与原始需求的核心动机“制作”吻合。",
  1527. "match_level": "基本匹配",
  1528. "core_basis": "帖子提供了在小红书上自制表情包的详细图文教程,满足了用户“如何制作”的动机。但未涉及到“猫咪”和“梗图”的特定类型,存在一定局限性,因此给出70分。"
  1529. },
  1530. "category_evaluation": {
  1531. "category_score": 45,
  1532. "original_category": {
  1533. "核心主体": "表情包",
  1534. "关键限定词": [
  1535. "制作",
  1536. "猫咪",
  1537. "梗图"
  1538. ]
  1539. },
  1540. "actual_category": {
  1541. "图片主体": "表情包制作教程",
  1542. "图片限定特征": [
  1543. "非猫咪相关的表情包",
  1544. "通用流程"
  1545. ],
  1546. "标题品类": "表情包(自制)",
  1547. "正文品类": "表情包制作教程"
  1548. },
  1549. "match_level": "弱匹配",
  1550. "subject_match": "核心主体'表情包'一致,但限定词有差异",
  1551. "qualifier_match": "限定词'制作'匹配,但'猫咪'和'梗图'缺失。图片主要展示通用表情包制作流程和二次元、卡通等非猫咪类表情包。",
  1552. "core_basis": "帖子图片展示的是通用表情包制作教程和多种非猫咪表情包,虽然主体是表情包制作,但缺失了需求中的“猫咪”和“梗图”这两个关键限定词,属于主体匹配但限定词严重缺失的情况。"
  1553. }
  1554. },
  1555. "post_666978a7000000001c023418_0_3": {
  1556. "type": "post",
  1557. "query": "[R] 敲简单!宝宝聊天表情包这么做!",
  1558. "level": 13,
  1559. "relevance_score": 0,
  1560. "strategy": "帖子",
  1561. "iteration": 1,
  1562. "is_selected": true,
  1563. "note_id": "666978a7000000001c023418",
  1564. "note_url": "https://www.xiaohongshu.com/explore/666978a7000000001c023418",
  1565. "body_text": "做表情包小白攻略如图所示 - ⭐如何做表情包: 🍓🐰XX→裁剪成正方形→添加文字/贴纸/涂鸦 - ⭐如何变表情包",
  1566. "images": [
  1567. "https://ci.xiaohongshu.com/1040g0083141356erie6g5nrrfsqg8n9bn7k6bs0?imageView2/2/w/1080/format/webp",
  1568. "https://ci.xiaohongshu.com/1040g008313um3009hm3g5nrrfsqg8n9b1f85d6g?imageView2/2/w/1080/format/webp",
  1569. "https://ci.xiaohongshu.com/1040g008313um3009hm4g5nrrfsqg8n9b0tmqbo8?imageView2/2/w/1080/format/webp",
  1570. "https://ci.xiaohongshu.com/1040g008313um3009hm2g5nrrfsqg8n9b479e6oo?imageView2/2/w/1080/format/webp",
  1571. "https://ci.xiaohongshu.com/1040g008313um3009hm205nrrfsqg8n9bpii5bv8?imageView2/2/w/1080/format/webp"
  1572. ],
  1573. "image_list": [
  1574. {
  1575. "image_url": "https://ci.xiaohongshu.com/1040g0083141356erie6g5nrrfsqg8n9bn7k6bs0?imageView2/2/w/1080/format/webp"
  1576. },
  1577. {
  1578. "image_url": "https://ci.xiaohongshu.com/1040g008313um3009hm3g5nrrfsqg8n9b1f85d6g?imageView2/2/w/1080/format/webp"
  1579. },
  1580. {
  1581. "image_url": "https://ci.xiaohongshu.com/1040g008313um3009hm4g5nrrfsqg8n9b0tmqbo8?imageView2/2/w/1080/format/webp"
  1582. },
  1583. {
  1584. "image_url": "https://ci.xiaohongshu.com/1040g008313um3009hm2g5nrrfsqg8n9b479e6oo?imageView2/2/w/1080/format/webp"
  1585. },
  1586. {
  1587. "image_url": "https://ci.xiaohongshu.com/1040g008313um3009hm205nrrfsqg8n9bpii5bv8?imageView2/2/w/1080/format/webp"
  1588. }
  1589. ],
  1590. "interact_info": {
  1591. "liked_count": 398,
  1592. "collected_count": 165,
  1593. "comment_count": 165,
  1594. "shared_count": 113
  1595. },
  1596. "extraction": null,
  1597. "is_knowledge": true,
  1598. "knowledge_reason": "",
  1599. "knowledge_score": 83,
  1600. "knowledge_level": null,
  1601. "knowledge_evaluation": {
  1602. "quick_exclude": {
  1603. "result": "通过",
  1604. "reason": "内容不涉及情感表达、作品展示、娱乐搞笑、虚假信息或重复常识,而是提供操作指南。"
  1605. },
  1606. "title_layer": {
  1607. "has_knowledge_direction": true,
  1608. "reason": "标题明确指出了'如何制作表情包'的方法性知识主题。"
  1609. },
  1610. "image_layer": {
  1611. "knowledge_presentation": {
  1612. "match": true,
  1613. "reason": "图片通过圈画、箭头等方式展示了制作表情包的步骤和工具界面。"
  1614. },
  1615. "educational_value": {
  1616. "has_value": true,
  1617. "reason": "图片能教会用户如何使用App制作表情包,具有教学意义。"
  1618. },
  1619. "structure_level": {
  1620. "structured": true,
  1621. "reason": "图片内容有清晰的步骤引导,通过逐帧演示App操作界面,具有结构化呈现。"
  1622. },
  1623. "practicality": {
  1624. "practical": true,
  1625. "reason": "图片内容提供了制作表情包的具体操作流程,具有直接应用价值。"
  1626. },
  1627. "information_density": {
  1628. "level": "中",
  1629. "reason": "提供了选择照片、裁剪、添加文字/贴纸等多个独立操作步骤,包含1-2个知识点。"
  1630. },
  1631. "overall": "传递知识"
  1632. },
  1633. "text_layer": {
  1634. "information_gain": {
  1635. "has_gain": true,
  1636. "reason": "正文简要概括了制作表情包的步骤,补充了图片中的操作方法,提供了新信息。"
  1637. },
  1638. "verifiability": {
  1639. "verifiable": true,
  1640. "reason": "正文描述的是可复现的操作步骤,基于美图秀秀等工具的实际应用,具有可验证性。"
  1641. },
  1642. "knowledge_type": {
  1643. "type": "方法性知识",
  1644. "reason": "内容提供了制作表情包的详细步骤和操作方法。"
  1645. },
  1646. "overall": "有知识支撑"
  1647. },
  1648. "judgment_logic": "该帖子通过了快速排除,标题明确指向知识,图片层和正文层都提供了制作表情包的方法性知识,包含详细步骤、具有教学价值和实用性。因此判定为知识。",
  1649. "core_evidence": [
  1650. "图片通过多个步骤展示了从选择照片到添加文字生成表情包的全过程。",
  1651. "正文提炼并概括了制作表情包的核心步骤(裁剪、加文字/贴纸/涂鸦),属于方法性知识。"
  1652. ],
  1653. "issues": [],
  1654. "conclusion": "该帖子是知识。它详细地展示了如何利用App制作表情包的具体方法和操作流程,具有明确的教学价值和实用性。"
  1655. },
  1656. "post_relevance_score": null,
  1657. "relevance_level": "",
  1658. "relevance_reason": "",
  1659. "relevance_conclusion": "",
  1660. "relevance_evaluation": null,
  1661. "is_content_knowledge": true,
  1662. "purpose_score": 78,
  1663. "category_score": 40,
  1664. "final_score": 66.6,
  1665. "match_level": "部分匹配",
  1666. "evaluator_version": "v3.0",
  1667. "content_knowledge_evaluation": {
  1668. "is_content_knowledge": true,
  1669. "final_score": 83,
  1670. "level": "⭐⭐⭐⭐ 良好内容知识",
  1671. "quick_exclude": {
  1672. "result": "否",
  1673. "reason": "标题和图片都明确指引了制作方法,并非纯展示"
  1674. },
  1675. "dimension_scores": {
  1676. "image_layer": {
  1677. "creation_method": {
  1678. "score": 20,
  1679. "reason": "图片清晰展示了从选择图片、裁剪、添加文字/贴纸的3个具体操作步骤。"
  1680. },
  1681. "knowledge_system": {
  1682. "score": 15,
  1683. "reason": "多图形成完整的步骤体系:选择-裁剪-编辑-完成,逻辑清晰。"
  1684. },
  1685. "teaching_annotation": {
  1686. "score": 12,
  1687. "reason": "图片中有箭头、圈注等明显的教学标注,指引用户操作,但部分细节可更完善。"
  1688. },
  1689. "method_reusability": {
  1690. "score": 8,
  1691. "reason": "制作表情包的方法具有一定的通用性,可以迁移到制作其他类型图片或表情上,但工具限制了其迁移到更广阔的创作场景。"
  1692. },
  1693. "principle_case": {
  1694. "score": 8,
  1695. "reason": "通过实际操作案例展示了如何制作表情包,结合了工具使用方法与效果。"
  1696. },
  1697. "subtotal": 63
  1698. },
  1699. "text_layer": {
  1700. "method_description": {
  1701. "score": 7,
  1702. "reason": "正文简要描述了制作表情包的步骤(XX→裁剪→添加文字/贴纸/涂鸦),但不够展开。"
  1703. },
  1704. "knowledge_summary": {
  1705. "score": 3,
  1706. "reason": "正文提供了'表情包小白攻略'的提法,但实际内容更侧重步骤罗列,缺乏知识总结和经验归纳。"
  1707. },
  1708. "subtotal": 10
  1709. },
  1710. "title_layer": {
  1711. "content_direction": {
  1712. "score": 10,
  1713. "reason": "标题“敲简单!宝宝聊天表情包这么做!”明确包含“怎么做”的教程/方法类词汇。"
  1714. },
  1715. "subtotal": 10
  1716. }
  1717. },
  1718. "core_evidence": [
  1719. "标题中明确指示“这么做”、“小白攻略”,导向教程。",
  1720. "图片通过箭头、圈划等标注展示了选择图片、裁剪、添加文字的完整操作流程。",
  1721. "正文简述了制作表情包的具体步骤,与图片内容呼应。"
  1722. ],
  1723. "issues": [
  1724. "正文对方法的描述不够详细和系统,未充分发挥辅助图片的作用。",
  1725. "缺乏对制作表情包背后设计原理或创意技巧的提炼,仅停留在工具操作层面。"
  1726. ],
  1727. "summary": "该帖子提供了制作表情包的详细操作步骤,图片层具有高度的教学性和方法性。虽然正文和知识总结部分有提升空间,但整体清晰地展现了可迁移的制作方法,属于良好的内容知识。"
  1728. },
  1729. "purpose_evaluation": {
  1730. "purpose_score": 78,
  1731. "core_motivation": "用户想学习如何制作(创作型)猫咪表情包梗图。",
  1732. "image_value": "图片展示了制作表情包的完整步骤:从选择照片、裁剪到添加文字/贴纸,一步步演示了如何将宝宝照片制作成表情包,过程清晰、直观。",
  1733. "title_intention": "标题明确指出了制作表情包的教学意图,并强调其简单性。",
  1734. "text_content": "正文提供了制作表情包的文字指引,与图片内容相辅相成,描述了制作表情包的步骤。",
  1735. "match_level": "基本匹配",
  1736. "core_basis": "帖子提供了清晰完整的表情包制作教程,流程可实现,但内容是关于宝宝表情包而非猫咪表情包,因此在具体对象上存在偏差但核心动机是满足的。"
  1737. },
  1738. "category_evaluation": {
  1739. "category_score": 40,
  1740. "original_category": {
  1741. "核心主体": "表情包",
  1742. "关键限定词": [
  1743. "猫咪",
  1744. "梗图",
  1745. "制作"
  1746. ]
  1747. },
  1748. "actual_category": {
  1749. "图片主体": "婴儿表情包制作流程",
  1750. "图片限定特征": [
  1751. "婴儿",
  1752. "美图秀秀",
  1753. "微信"
  1754. ],
  1755. "标题品类": "表情包制作教程",
  1756. "正文品类": "表情包制作小白攻略"
  1757. },
  1758. "match_level": "中度相关",
  1759. "subject_match": "核心主体'表情包'一致,但'梗图'和'制作'相关性弱,因为帖子内容实际是制作教程",
  1760. "qualifier_match": "限定词'猫咪'完全不匹配,需求是猫咪相关的,帖子是婴儿相关的。限定词'梗图'与帖子内容不完全匹配,帖子内容是制作普通表情包,而非梗图类型。",
  1761. "core_basis": "需求的核心是'猫咪表情包梗图'。帖子虽然是关于'表情包'的'制作',但图片和内容主体是'婴儿表情包',与需求的'猫咪'这一关键限定词完全不符,且与'梗图'类型也不完全一致。因此,核心主体一致,但关键限定词不匹配,属于主体过度泛化情况。"
  1762. }
  1763. },
  1764. "post_68543e700000000017036013_0_4": {
  1765. "type": "post",
  1766. "query": "[R] 🔥拿捏🫴 超可爱宝宝表情包教程2.0🧩附素",
  1767. "level": 13,
  1768. "relevance_score": 0,
  1769. "strategy": "帖子",
  1770. "iteration": 1,
  1771. "is_selected": true,
  1772. "note_id": "68543e700000000017036013",
  1773. "note_url": "https://www.xiaohongshu.com/explore/68543e700000000017036013",
  1774. "body_text": "✨之前发的表情包教程爆火后,好多宝子催更第二弹! 这次升级版难度⭐️⭐️⭐️但效果绝绝子~新增15+描边文字+13款手绘",
  1775. "images": [
  1776. "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031itumoanhce05pjjuvphouj91itjei0?imageView2/2/w/1080/format/webp",
  1777. "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031itumoanhceg5pjjuvphouj97sqpc98?imageView2/2/w/1080/format/webp",
  1778. "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031itumoanhcf05pjjuvphouj90v5b4n8?imageView2/2/w/1080/format/webp",
  1779. "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031itumoanhcfg5pjjuvphouj9nkesga8?imageView2/2/w/1080/format/webp",
  1780. "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031itumoanhcg05pjjuvphouj92iv1vdo?imageView2/2/w/1080/format/webp",
  1781. "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031itumoanhcgg5pjjuvphouj9p450ed0?imageView2/2/w/1080/format/webp",
  1782. "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031itumoanhch05pjjuvphouj987f9rqo?imageView2/2/w/1080/format/webp",
  1783. "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031itumoanhchg5pjjuvphouj9rps3458?imageView2/2/w/1080/format/webp"
  1784. ],
  1785. "image_list": [
  1786. {
  1787. "image_url": "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031itumoanhce05pjjuvphouj91itjei0?imageView2/2/w/1080/format/webp"
  1788. },
  1789. {
  1790. "image_url": "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031itumoanhceg5pjjuvphouj97sqpc98?imageView2/2/w/1080/format/webp"
  1791. },
  1792. {
  1793. "image_url": "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031itumoanhcf05pjjuvphouj90v5b4n8?imageView2/2/w/1080/format/webp"
  1794. },
  1795. {
  1796. "image_url": "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031itumoanhcfg5pjjuvphouj9nkesga8?imageView2/2/w/1080/format/webp"
  1797. },
  1798. {
  1799. "image_url": "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031itumoanhcg05pjjuvphouj92iv1vdo?imageView2/2/w/1080/format/webp"
  1800. },
  1801. {
  1802. "image_url": "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031itumoanhcgg5pjjuvphouj9p450ed0?imageView2/2/w/1080/format/webp"
  1803. },
  1804. {
  1805. "image_url": "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031itumoanhch05pjjuvphouj987f9rqo?imageView2/2/w/1080/format/webp"
  1806. },
  1807. {
  1808. "image_url": "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031itumoanhchg5pjjuvphouj9rps3458?imageView2/2/w/1080/format/webp"
  1809. }
  1810. ],
  1811. "interact_info": {
  1812. "liked_count": 1911,
  1813. "collected_count": 1742,
  1814. "comment_count": 1155,
  1815. "shared_count": 315
  1816. },
  1817. "extraction": null,
  1818. "is_knowledge": true,
  1819. "knowledge_reason": "",
  1820. "knowledge_score": 93,
  1821. "knowledge_level": null,
  1822. "knowledge_evaluation": {
  1823. "quick_exclude": {
  1824. "result": "通过",
  1825. "reason": "内容是关于制作表情包的教程,不属于纯情感表达、娱乐搞笑或虚假信息。"
  1826. },
  1827. "title_layer": {
  1828. "has_knowledge_direction": true,
  1829. "reason": "标题明确指明是'表情包教程',暗示方法性知识。"
  1830. },
  1831. "image_layer": {
  1832. "knowledge_presentation": {
  1833. "match": true,
  1834. "reason": "图片包含具体操作步骤的截图和标注,形成教程体系。"
  1835. },
  1836. "educational_value": {
  1837. "has_value": true,
  1838. "reason": "图片展示了制作表情包的详细流程,能教会他人具体技能。"
  1839. },
  1840. "structure_level": {
  1841. "structured": true,
  1842. "reason": "图片使用数字序号清晰地组织了制作步骤,有明确的逻辑结构。"
  1843. },
  1844. "practicality": {
  1845. "practical": true,
  1846. "reason": "提供制作微信表情包的具体方法和素材,具有直接应用价值。"
  1847. },
  1848. "information_density": {
  1849. "level": "高",
  1850. "reason": "包含从导入素材到抠图、添加描边、导入微信等多个细致的步骤和技巧点,信息密度高。"
  1851. },
  1852. "overall": "传递知识"
  1853. },
  1854. "text_layer": {
  1855. "information_gain": {
  1856. "has_gain": true,
  1857. "reason": "正文提到是“升级版教程”,新增了描边文字和手绘,预示提供新的操作方法和素材。"
  1858. },
  1859. "verifiability": {
  1860. "verifiable": true,
  1861. "reason": "教程内容基于实际应用软件的操作步骤,具有可验证性。"
  1862. },
  1863. "knowledge_type": {
  1864. "type": "方法性知识, 应用性知识",
  1865. "reason": "提供了制作表情包的具体步骤和工具使用方法,属于方法性知识和应用性知识。"
  1866. },
  1867. "overall": "有知识支撑"
  1868. },
  1869. "judgment_logic": "该帖子通过快速排除,图片层和正文层均明确传递了方法性和应用性知识。图片以分步教程的形式展现了制作微信表情包的完整流程,具有高信息密度和教育价值。正文作为辅助也说明了教程的升级和新内容。",
  1870. "core_evidence": [
  1871. "图片通过数字序号详细展示了制作表情包的14个步骤,包含了从素材导入、抠图、添加描边到导入微信的完整流程。",
  1872. "图片中包含具体的软件界面截图和操作指示,属于典型的可视化方法性知识。",
  1873. "标题明确指出是'表情包教程',正文也预告了'升级版'和新增功能,强化了内容的功能性指导作用。"
  1874. ],
  1875. "issues": [],
  1876. "conclusion": "该帖子提供了制作宝宝表情包的详细教程和素材,属于方法性知识和应用性知识,具备明确的教学价值,因此判定为知识。"
  1877. },
  1878. "post_relevance_score": null,
  1879. "relevance_level": "",
  1880. "relevance_reason": "",
  1881. "relevance_conclusion": "",
  1882. "relevance_evaluation": null,
  1883. "is_content_knowledge": true,
  1884. "purpose_score": 95,
  1885. "category_score": 25,
  1886. "final_score": 74,
  1887. "match_level": "基本匹配",
  1888. "evaluator_version": "v3.0",
  1889. "content_knowledge_evaluation": {
  1890. "is_content_knowledge": true,
  1891. "final_score": 93,
  1892. "level": "⭐⭐⭐⭐⭐ 优质内容知识",
  1893. "quick_exclude": {
  1894. "result": "否",
  1895. "reason": "内容提供了详细的创作教程,并非纯展示或单次操作。"
  1896. },
  1897. "dimension_scores": {
  1898. "image_layer": {
  1899. "creation_method": {
  1900. "score": 20,
  1901. "reason": "图片详细展示了创建画布、导入素材、智能抠图、添加描边、调整素材等多个具体可操作的表情包制作方法和技巧,步骤清晰。"
  1902. },
  1903. "knowledge_system": {
  1904. "score": 15,
  1905. "reason": "多图形成完整的制作步骤流(创建-导入-处理-组合),逻辑清晰,用户可按步骤操作。"
  1906. },
  1907. "teaching_annotation": {
  1908. "score": 15,
  1909. "reason": "图片包含大量教学标注,如带有序号的步骤指引、箭头指示操作对象、文字说明具体功能,清晰易懂。"
  1910. },
  1911. "method_reusability": {
  1912. "score": 10,
  1913. "reason": "整个表情包制作教程方法具有通用性,可应用于其他类型表情包或图片处理,且提供了资源素材。"
  1914. },
  1915. "principle_case": {
  1916. "score": 10,
  1917. "reason": "通过实际案例(宝宝表情包)展示了抠图、描边、组合等创作原理和具体应用方法。"
  1918. },
  1919. "subtotal": 70
  1920. },
  1921. "text_layer": {
  1922. "method_description": {
  1923. "score": 10,
  1924. "reason": "正文明确指出是教程的升级版,且标题和图片共同描述了详细的制作步骤,弥补了正文描述的简洁性。"
  1925. },
  1926. "knowledge_summary": {
  1927. "score": 8,
  1928. "reason": "正文提到'新增15+描边文字+13款手绘',体现了内容升级和元素提炼,虽然无明确的知识总结,但强化了方法的丰富性。"
  1929. },
  1930. "subtotal": 18
  1931. },
  1932. "title_layer": {
  1933. "content_direction": {
  1934. "score": 5,
  1935. "reason": "标题包含“教程”明确指向创作方法,且有“附素”提示有素材,但“拿捏🫴 超可爱宝宝表情包”更偏展示性,拉低了分数。"
  1936. },
  1937. "subtotal": 5
  1938. }
  1939. },
  1940. "core_evidence": [
  1941. "图片4-8详细展示了表情包制作的每个步骤,从画布创建到素材编辑,流程清晰。",
  1942. "图片中有大量的数字序号和箭头标注,明确指引用户操作。",
  1943. "图片3提供了表情包文字和贴纸素材的分享,增加了方法的完整性和可复用性。",
  1944. "标题明确包含“教程”字样,指示内容为方法教学。",
  1945. "正文提及“表情包教程爆火后,好多宝子催更第二弹! 这次升级版难度⭐️⭐️⭐️但效果绝绝子~新增15+描边文字+13款手绘”,强调了教程性质和知识点的更新。"
  1946. ],
  1947. "issues": [
  1948. "正文信息较为简短,对具体方法和步骤的描述不如图片详细,主要起引导作用。"
  1949. ],
  1950. "summary": "该帖子提供了详细的表情包制作教程,通过图片清晰展示了从素材导入到最终制作的多个步骤和技巧,且具有较强的通用性和可操作性。标题和正文进一步确认了其教程属性,属于优质的内容知识。"
  1951. },
  1952. "purpose_evaluation": {
  1953. "purpose_score": 95,
  1954. "core_motivation": "学习如何制作猫咪表情包梗图",
  1955. "image_value": "图片清晰地展示了如何一步步制作宝宝表情包的教程,包括导入素材、智能抠图、添加描边、文字和贴纸,最终导入到微信表情的过程,流程完整且配有示例效果图和部分素材分享图。",
  1956. "title_intention": "标题明确说明是“超可爱宝宝表情包教程”,与用户制作表情包的意图高度一致。虽然是“宝宝”而非“猫咪”,但制作表情包的方法是相通的。",
  1957. "text_content": "正文提到这是“表情包教程”的升级版,并说明新增了描边文字和手绘素材,进一步强调了教程属性和内容的丰富性。与猫咪品类不一致不影响动机判断。",
  1958. "match_level": "高度匹配",
  1959. "core_basis": "教程步骤完整,图片详情度高,最终可生成表情包,满足用户“制作...梗图”的核心学习型+创作型动机。虽然品类不是猫咪,但制作方法通用,易于用户迁移学习。"
  1960. },
  1961. "category_evaluation": {
  1962. "category_score": 25,
  1963. "original_category": {
  1964. "核心主体": "表情包",
  1965. "关键限定词": [
  1966. "猫咪",
  1967. "梗图",
  1968. "制作"
  1969. ]
  1970. },
  1971. "actual_category": {
  1972. "图片主体": "婴儿表情包制作教程",
  1973. "图片限定特征": [
  1974. "教程",
  1975. "婴儿",
  1976. "微信表情包",
  1977. "卡通贴纸风"
  1978. ],
  1979. "标题品类": "表情包教程",
  1980. "正文品类": "表情包教程"
  1981. },
  1982. "match_level": "主体过度泛化",
  1983. "subject_match": "核心主体在'表情包'这一泛化概念上匹配,但具体内容(猫咪 vs 婴儿)不匹配",
  1984. "qualifier_match": "制作匹配,猫咪缺失,梗图缺失",
  1985. "core_basis": "原始需求的核心主体是“猫咪表情包梗图”,而帖子图片和标题展示的是“婴儿表情包教程”。主体虽然都是表情包,但限定词“猫咪”和“梗图”与“婴儿”和“教程”完全不匹配,核心内容差异大。"
  1986. }
  1987. },
  1988. "post_674962d800000000020393bc_0_5": {
  1989. "type": "post",
  1990. "query": "[R] 自制宝宝表情包|简单附素材(可自取)",
  1991. "level": 13,
  1992. "relevance_score": 0,
  1993. "strategy": "帖子",
  1994. "iteration": 1,
  1995. "is_selected": true,
  1996. "note_id": "674962d800000000020393bc",
  1997. "note_url": "https://www.xiaohongshu.com/explore/674962d800000000020393bc",
  1998. "body_text": "很有意思的表情包 🉑发到家族群哈哈哈哈哈 抠图教程如下: 打开⭐️图选择模版,导入宝宝正脸照然后将头部移动到合适的位置",
  1999. "images": [
  2000. "https://ci.xiaohongshu.com/1040g2sg31apbhts9ng005n396f24dp11e5t9kn8?imageView2/2/w/1080/format/webp",
  2001. "https://ci.xiaohongshu.com/1040g2sg31apbhts9ng0g5n396f24dp11u4kd198?imageView2/2/w/1080/format/webp",
  2002. "https://ci.xiaohongshu.com/1040g2sg31apbhts9ng105n396f24dp111kgkim0?imageView2/2/w/1080/format/webp",
  2003. "https://ci.xiaohongshu.com/1040g2sg31apbhts9ng1g5n396f24dp110tmqrqg?imageView2/2/w/1080/format/webp",
  2004. "https://ci.xiaohongshu.com/1040g2sg31apbhts9ng205n396f24dp11bb2v8hg?imageView2/2/w/1080/format/webp",
  2005. "https://ci.xiaohongshu.com/1040g2sg31apbhts9ng2g5n396f24dp11p07dbno?imageView2/2/w/1080/format/webp",
  2006. "https://ci.xiaohongshu.com/1040g2sg31apbhts9ng305n396f24dp11sn5mn0g?imageView2/2/w/1080/format/webp",
  2007. "https://ci.xiaohongshu.com/1040g2sg31apbhts9ng3g5n396f24dp11qjfm8jg?imageView2/2/w/1080/format/webp"
  2008. ],
  2009. "image_list": [
  2010. {
  2011. "image_url": "https://ci.xiaohongshu.com/1040g2sg31apbhts9ng005n396f24dp11e5t9kn8?imageView2/2/w/1080/format/webp"
  2012. },
  2013. {
  2014. "image_url": "https://ci.xiaohongshu.com/1040g2sg31apbhts9ng0g5n396f24dp11u4kd198?imageView2/2/w/1080/format/webp"
  2015. },
  2016. {
  2017. "image_url": "https://ci.xiaohongshu.com/1040g2sg31apbhts9ng105n396f24dp111kgkim0?imageView2/2/w/1080/format/webp"
  2018. },
  2019. {
  2020. "image_url": "https://ci.xiaohongshu.com/1040g2sg31apbhts9ng1g5n396f24dp110tmqrqg?imageView2/2/w/1080/format/webp"
  2021. },
  2022. {
  2023. "image_url": "https://ci.xiaohongshu.com/1040g2sg31apbhts9ng205n396f24dp11bb2v8hg?imageView2/2/w/1080/format/webp"
  2024. },
  2025. {
  2026. "image_url": "https://ci.xiaohongshu.com/1040g2sg31apbhts9ng2g5n396f24dp11p07dbno?imageView2/2/w/1080/format/webp"
  2027. },
  2028. {
  2029. "image_url": "https://ci.xiaohongshu.com/1040g2sg31apbhts9ng305n396f24dp11sn5mn0g?imageView2/2/w/1080/format/webp"
  2030. },
  2031. {
  2032. "image_url": "https://ci.xiaohongshu.com/1040g2sg31apbhts9ng3g5n396f24dp11qjfm8jg?imageView2/2/w/1080/format/webp"
  2033. }
  2034. ],
  2035. "interact_info": {
  2036. "liked_count": 231,
  2037. "collected_count": 77,
  2038. "comment_count": 91,
  2039. "shared_count": 16
  2040. },
  2041. "extraction": null,
  2042. "is_knowledge": true,
  2043. "knowledge_reason": "",
  2044. "knowledge_score": 83,
  2045. "knowledge_level": null,
  2046. "knowledge_evaluation": {
  2047. "quick_exclude": {
  2048. "result": "通过",
  2049. "reason": "内容不属于纯情感表达/生活记录/打卡、单纯作品展示、娱乐搞笑、虚假信息或纯重复常识。"
  2050. },
  2051. "title_layer": {
  2052. "has_knowledge_direction": true,
  2053. "reason": "标题明确指出了“自制表情包”和“附素材”,暗示了方法性知识的存在。"
  2054. },
  2055. "image_layer": {
  2056. "knowledge_presentation": {
  2057. "match": true,
  2058. "reason": "第二张图片展示了如何通过软件选择模板来制作表情包,包含了操作截图和文字说明。"
  2059. },
  2060. "educational_value": {
  2061. "has_value": true,
  2062. "reason": "图片配合正文能教会用户制作宝宝表情包的方法和步骤。"
  2063. },
  2064. "structure_level": {
  2065. "structured": true,
  2066. "reason": "图片2清晰展示了软件界面,有“模板图直接套”等文字指导,形成了操作步骤的一部分。"
  2067. },
  2068. "practicality": {
  2069. "practical": true,
  2070. "reason": "提供了制作表情包的工具使用方法和实现路径,具有直接应用价值。"
  2071. },
  2072. "information_density": {
  2073. "level": "中",
  2074. "reason": "图片层包含了软件操作界面和制作流程图,提供了关键的操作步骤。"
  2075. },
  2076. "overall": "传递知识"
  2077. },
  2078. "text_layer": {
  2079. "information_gain": {
  2080. "has_gain": true,
  2081. "reason": "正文提供了制作表情包的具体工具(小红书App的“图冲”功能)和简要步骤(打开App、选择模板、导入照片、移动头部),是新的方法性信息。"
  2082. },
  2083. "verifiability": {
  2084. "verifiable": true,
  2085. "reason": "描述的是一个具体的软件操作流程,易于用户自行验证和实践。"
  2086. },
  2087. "knowledge_type": {
  2088. "type": "方法性知识",
  2089. "reason": "内容是教导用户如何使用特定工具制作表情包,属于操作性方法。"
  2090. },
  2091. "overall": "有知识支撑"
  2092. },
  2093. "judgment_logic": "该帖子通过了快速排除,并且标题、图片和正文层都明确指向了知识。图片层以截图展示了制作方法,具有较强的教育价值和实用性。正文补充了具体的工具和步骤,提供了方法性知识,具有信息增量和可验证性。综合判定满足“是知识”的所有条件。",
  2094. "core_evidence": [
  2095. "标题中“自制宝表情包|简单附素材(可自取)”指明了教学性质。",
  2096. "正文描述了“抠图教程”,并给出了具体步骤:“打开⭐️图选择模版,导入宝宝正脸照然后将头部移动到合适的位置”。",
  2097. "图片2展示了实际的APP操作界面,指导用户如何找到和使用模板制作表情包,是核心的方法性知识呈现。"
  2098. ],
  2099. "issues": [],
  2100. "conclusion": "该帖子被判定为“知识”。它提供了一种制作宝宝表情包的方法性知识,通过图片和文字结合的方式,清晰地呈现了具体的工具使用和操作步骤,具有实用价值和可操作性。"
  2101. },
  2102. "post_relevance_score": null,
  2103. "relevance_level": "",
  2104. "relevance_reason": "",
  2105. "relevance_conclusion": "",
  2106. "relevance_evaluation": null,
  2107. "is_content_knowledge": true,
  2108. "purpose_score": 70,
  2109. "category_score": 65,
  2110. "final_score": 68.5,
  2111. "match_level": "部分匹配",
  2112. "evaluator_version": "v3.0",
  2113. "content_knowledge_evaluation": {
  2114. "is_content_knowledge": true,
  2115. "final_score": 83,
  2116. "level": "⭐⭐⭐⭐ 良好内容知识",
  2117. "quick_exclude": {
  2118. "result": "否",
  2119. "reason": "标题虽然有展示成分但也有“自制”,正文和图片包含了具体的制作方法和步骤。"
  2120. },
  2121. "dimension_scores": {
  2122. "image_layer": {
  2123. "creation_method": {
  2124. "score": 20,
  2125. "reason": "图片清晰展示了通过特定App(醒图)选择模板,导入照片并调整位置的完整操作流程,是具体的制作方法。"
  2126. },
  2127. "knowledge_system": {
  2128. "score": 15,
  2129. "reason": "多图形成了一个完整的制作流程:从选择软件、选择模板、导入照片到调整位置,逻辑清晰且有步骤性。"
  2130. },
  2131. "teaching_annotation": {
  2132. "score": 12,
  2133. "reason": "图片中包含了“模版图直接套”的文字标注,有助理解,但缺乏更详细的箭头、高亮等视觉指引。"
  2134. },
  2135. "method_reusability": {
  2136. "score": 8,
  2137. "reason": "使用App模板制作表情包的方法具有一定的通用性,可迁移到制作其他类型的表情包或类似图片处理中。"
  2138. },
  2139. "principle_case": {
  2140. "score": 8,
  2141. "reason": "虽然主要是制作方法,但也通过实际案例展示了抠图的最终效果,原理和案例结合度较高。"
  2142. },
  2143. "subtotal": 63
  2144. },
  2145. "text_layer": {
  2146. "method_description": {
  2147. "score": 10,
  2148. "reason": "正文明确描述了抠图教程的步骤:打开醒图选择模板,导入宝宝正脸照,然后将头部移动到合适位置,是具体的步骤描述。"
  2149. },
  2150. "knowledge_summary": {
  2151. "score": 4,
  2152. "reason": "正文主要侧重于操作步骤,缺乏对表情包制作更广泛的经验总结或知识提炼。"
  2153. },
  2154. "subtotal": 14
  2155. },
  2156. "title_layer": {
  2157. "content_direction": {
  2158. "score": 6,
  2159. "reason": "标题包含“自制”和“附素材(可自取)”,暗示了制作方法和可供使用的资源,但未直接使用“教程”、“技巧”等强指向词。"
  2160. },
  2161. "subtotal": 6
  2162. }
  2163. },
  2164. "core_evidence": [
  2165. "图片清晰展示了使用“醒图”App制作表情包的步骤(选择模板、导入照片、调整位置)。",
  2166. "正文明确提供了“抠图教程如下:打开⭐️图选择模版,导入宝宝正脸照然后将头部移动到合适的位置”的步骤说明。",
  2167. "图片中的标注“模版图直接套”进一步解释了操作方式。"
  2168. ],
  2169. "issues": [],
  2170. "summary": "该帖子提供了使用醒图App自制宝宝表情包的详细教程,通过图片和正文清晰展示了制作步骤和方法。虽然标题和正文的知识提炼度有提升空间,但其操作方法具体、可复用性好,整体符合内容知识的定义。"
  2171. },
  2172. "purpose_evaluation": {
  2173. "purpose_score": 70,
  2174. "core_motivation": "学习如何制作猫咪表情包梗图",
  2175. "image_value": "图片展示了多张以婴儿为主题的表情包成品,以及制作软件中的表情包分类截图(内含模板),但均非猫咪表情包。",
  2176. "title_intention": "标题表明了内容是关于“自制宝宝表情包”的教程并附带素材。",
  2177. "text_content": "正文提供了制作表情包的简要教程步骤,指导用户如何使用App选择模板并导入照片进行抠图制作。",
  2178. "match_level": "部分满足动机",
  2179. "core_basis": "帖子提供了制作表情包梗图的方法和流程,且有案例图,能满足“如何制作”的动机。但核心内容是宝宝表情包,并非用户需求的猫咪表情包,因此并非完全满足,属于部分满足有参考价值。"
  2180. },
  2181. "category_evaluation": {
  2182. "category_score": 65,
  2183. "original_category": {
  2184. "核心主体": "表情包",
  2185. "关键限定词": [
  2186. "猫咪",
  2187. "梗图",
  2188. "制作"
  2189. ]
  2190. },
  2191. "actual_category": {
  2192. "图片主体": "表情包",
  2193. "图片限定特征": [
  2194. "宝宝",
  2195. "搞怪"
  2196. ],
  2197. "标题品类": "表情包",
  2198. "正文品类": "表情包"
  2199. },
  2200. "match_level": "基本匹配",
  2201. "subject_match": "核心主体'表情包'一致",
  2202. "qualifier_match": "限定词'猫咪'未匹配,帖子实际是'宝宝';限定词'梗图'在图片中体现为搞怪风格,有一定关联;'制作'方式在正文中有提及。",
  2203. "core_basis": "核心主体“表情包”完全匹配,但限定词“猫咪”与帖子内容“宝宝”不符,有明显偏移。虽然有“梗图”风格和制作教程,但与具体“猫咪”的限定词差异较大,因此评为基本匹配。"
  2204. }
  2205. },
  2206. "post_66d1312d000000001d014731_0_6": {
  2207. "type": "post",
  2208. "query": "[R] 亲妈都会干的一件事吧?",
  2209. "level": 13,
  2210. "relevance_score": 0,
  2211. "strategy": "帖子",
  2212. "iteration": 1,
  2213. "is_selected": true,
  2214. "note_id": "66d1312d000000001d014731",
  2215. "note_url": "https://www.xiaohongshu.com/explore/66d1312d000000001d014731",
  2216. "body_text": "宝宝表情好可爱 好丰富 忍不住做成了表情包 🤣🤣🤣做下来发现很多都能覆盖日常需要用的😀😀 教程: 1️⃣打开美",
  2217. "images": [
  2218. "https://ci.xiaohongshu.com/1040g2sg3173vftv63u005n822jilj3745uuqqpo?imageView2/2/w/1080/format/webp",
  2219. "https://ci.xiaohongshu.com/1040g2sg3174432a946705n822jilj374s0p48to?imageView2/2/w/1080/format/webp",
  2220. "https://ci.xiaohongshu.com/1040g2sg3174432a9467g5n822jilj374a82a4v8?imageView2/2/w/1080/format/webp",
  2221. "https://ci.xiaohongshu.com/1040g2sg3174432a946805n822jilj374i68c42o?imageView2/2/w/1080/format/webp",
  2222. "https://ci.xiaohongshu.com/1040g2sg3174432a9468g5n822jilj3744b02bpg?imageView2/2/w/1080/format/webp",
  2223. "https://ci.xiaohongshu.com/1040g2sg3174432a946905n822jilj374cqgp0e8?imageView2/2/w/1080/format/webp"
  2224. ],
  2225. "image_list": [
  2226. {
  2227. "image_url": "https://ci.xiaohongshu.com/1040g2sg3173vftv63u005n822jilj3745uuqqpo?imageView2/2/w/1080/format/webp"
  2228. },
  2229. {
  2230. "image_url": "https://ci.xiaohongshu.com/1040g2sg3174432a946705n822jilj374s0p48to?imageView2/2/w/1080/format/webp"
  2231. },
  2232. {
  2233. "image_url": "https://ci.xiaohongshu.com/1040g2sg3174432a9467g5n822jilj374a82a4v8?imageView2/2/w/1080/format/webp"
  2234. },
  2235. {
  2236. "image_url": "https://ci.xiaohongshu.com/1040g2sg3174432a946805n822jilj374i68c42o?imageView2/2/w/1080/format/webp"
  2237. },
  2238. {
  2239. "image_url": "https://ci.xiaohongshu.com/1040g2sg3174432a9468g5n822jilj3744b02bpg?imageView2/2/w/1080/format/webp"
  2240. },
  2241. {
  2242. "image_url": "https://ci.xiaohongshu.com/1040g2sg3174432a946905n822jilj374cqgp0e8?imageView2/2/w/1080/format/webp"
  2243. }
  2244. ],
  2245. "interact_info": {
  2246. "liked_count": 2378,
  2247. "collected_count": 1360,
  2248. "comment_count": 507,
  2249. "shared_count": 1128
  2250. },
  2251. "extraction": null,
  2252. "is_knowledge": false,
  2253. "knowledge_reason": "",
  2254. "knowledge_score": null,
  2255. "knowledge_level": null,
  2256. "knowledge_evaluation": {
  2257. "quick_exclude": {
  2258. "result": "未通过",
  2259. "reason": "内容属于娱乐搞笑/单纯作品展示,仅展示了制作的表情包,缺乏知识提炼和价值。"
  2260. },
  2261. "title_layer": {
  2262. "has_knowledge_direction": false,
  2263. "reason": "标题为情感型和展示型,不指向知识。"
  2264. },
  2265. "image_layer": {
  2266. "knowledge_presentation": {
  2267. "match": false,
  2268. "reason": "图片纯粹是表情包展示,无信息图表、知识性标注或知识体系构建。"
  2269. },
  2270. "educational_value": {
  2271. "has_value": false,
  2272. "reason": "图片内容无教学意义,无法教会他人方法、技能或原理。"
  2273. },
  2274. "structure_level": {
  2275. "structured": false,
  2276. "reason": "表情包是碎片化的展示,缺乏逻辑组织或结构化呈现。"
  2277. },
  2278. "practicality": {
  2279. "practical": false,
  2280. "reason": "图片内容为观赏性表情包,无实际应用价值。"
  2281. },
  2282. "information_density": {
  2283. "level": "低",
  2284. "reason": "图片仅展示了制作的表情包,无明确知识点。"
  2285. },
  2286. "overall": "无知识价值"
  2287. },
  2288. "text_layer": {
  2289. "information_gain": {
  2290. "has_gain": false,
  2291. "reason": "正文仅表达了个人感受和制作表情包的心情(宝宝表情可爱,忍不住做成表情包),没有提供新的知识或方法,'教程:1️⃣打开美' 部分不完整,未形成知识。"
  2292. },
  2293. "verifiability": {
  2294. "verifiable": false,
  2295. "reason": "正文是纯主观感受,无法验证。"
  2296. },
  2297. "knowledge_type": {
  2298. "type": "无法归类",
  2299. "reason": "内容无法归类为事实、原理、方法、经验、概念或应用知识。"
  2300. },
  2301. "overall": "无知识价值"
  2302. },
  2303. "judgment_logic": "内容未通过快速排除,因为属于娱乐搞笑和单纯作品展示。图片层和正文层均无知识价值。正文内容是个人记录与情感表达,未提供有效信息增量,也无法归类为知识类型。",
  2304. "core_evidence": [
  2305. "内容主体是制作并展示的宝宝表情包,属于娱乐内容和单纯作品展示。",
  2306. "正文是个人情感表达和轻微的制作提及,缺乏完整、可用的方法性知识。"
  2307. ],
  2308. "issues": [],
  2309. "conclusion": "该帖子不被判定为知识。它主要展示制作的宝宝表情包和表达个人情感,缺乏具有可靠性和真实性的信息,不属于任何知识类型。"
  2310. },
  2311. "post_relevance_score": null,
  2312. "relevance_level": "",
  2313. "relevance_reason": "",
  2314. "relevance_conclusion": "",
  2315. "relevance_evaluation": null,
  2316. "is_content_knowledge": null,
  2317. "purpose_score": null,
  2318. "category_score": null,
  2319. "final_score": null,
  2320. "match_level": "",
  2321. "evaluator_version": "v3.0",
  2322. "content_knowledge_evaluation": null,
  2323. "purpose_evaluation": null,
  2324. "category_evaluation": null
  2325. },
  2326. "post_68919d0e00000000220216b4_0_7": {
  2327. "type": "post",
  2328. "query": "[R] ",
  2329. "level": 13,
  2330. "relevance_score": 0,
  2331. "strategy": "帖子",
  2332. "iteration": 1,
  2333. "is_selected": true,
  2334. "note_id": "68919d0e00000000220216b4",
  2335. "note_url": "https://www.xiaohongshu.com/explore/68919d0e00000000220216b4",
  2336. "body_text": "自制表情包教程: 1️⃣醒图导入以上表情图,放大截图就行没水印 2️⃣再导入一张自己的图片,把五官抠图下来放进表情图",
  2337. "images": [
  2338. "https://ci.xiaohongshu.com/1040g00831kpsekkdio6g5odul4kk1svn359kl98?imageView2/2/w/1080/format/webp",
  2339. "https://ci.xiaohongshu.com/1040g00831kpsekkdio5g5odul4kk1svnr7nfq5o?imageView2/2/w/1080/format/webp",
  2340. "https://ci.xiaohongshu.com/1040g00831kpsekkdio2g5odul4kk1svn5v4s8a8?imageView2/2/w/1080/format/webp",
  2341. "https://ci.xiaohongshu.com/1040g00831kpsekkdio205odul4kk1svnuh1emdg?imageView2/2/w/1080/format/webp",
  2342. "https://ci.xiaohongshu.com/1040g00831kpsekkdio305odul4kk1svnjivj8eg?imageView2/2/w/1080/format/webp",
  2343. "https://ci.xiaohongshu.com/1040g00831kpsekkdio3g5odul4kk1svns99kgeg?imageView2/2/w/1080/format/webp",
  2344. "https://ci.xiaohongshu.com/1040g00831kpsekkdio605odul4kk1svndufkb0g?imageView2/2/w/1080/format/webp",
  2345. "https://ci.xiaohongshu.com/1040g00831kpsekkdio405odul4kk1svnstqmlco?imageView2/2/w/1080/format/webp",
  2346. "https://ci.xiaohongshu.com/1040g00831kpsekkdio4g5odul4kk1svnt4r4lm8?imageView2/2/w/1080/format/webp",
  2347. "https://ci.xiaohongshu.com/1040g00831kpsekkdio105odul4kk1svnqpq796g?imageView2/2/w/1080/format/webp",
  2348. "https://ci.xiaohongshu.com/1040g00831kpsekkdio005odul4kk1svnjnpm808?imageView2/2/w/1080/format/webp"
  2349. ],
  2350. "image_list": [
  2351. {
  2352. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio6g5odul4kk1svn359kl98?imageView2/2/w/1080/format/webp"
  2353. },
  2354. {
  2355. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio5g5odul4kk1svnr7nfq5o?imageView2/2/w/1080/format/webp"
  2356. },
  2357. {
  2358. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio2g5odul4kk1svn5v4s8a8?imageView2/2/w/1080/format/webp"
  2359. },
  2360. {
  2361. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio205odul4kk1svnuh1emdg?imageView2/2/w/1080/format/webp"
  2362. },
  2363. {
  2364. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio305odul4kk1svnjivj8eg?imageView2/2/w/1080/format/webp"
  2365. },
  2366. {
  2367. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio3g5odul4kk1svns99kgeg?imageView2/2/w/1080/format/webp"
  2368. },
  2369. {
  2370. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio605odul4kk1svndufkb0g?imageView2/2/w/1080/format/webp"
  2371. },
  2372. {
  2373. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio405odul4kk1svnstqmlco?imageView2/2/w/1080/format/webp"
  2374. },
  2375. {
  2376. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio4g5odul4kk1svnt4r4lm8?imageView2/2/w/1080/format/webp"
  2377. },
  2378. {
  2379. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio105odul4kk1svnqpq796g?imageView2/2/w/1080/format/webp"
  2380. },
  2381. {
  2382. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio005odul4kk1svnjnpm808?imageView2/2/w/1080/format/webp"
  2383. }
  2384. ],
  2385. "interact_info": {
  2386. "liked_count": 2,
  2387. "collected_count": 3,
  2388. "comment_count": 0,
  2389. "shared_count": 1
  2390. },
  2391. "extraction": null,
  2392. "is_knowledge": true,
  2393. "knowledge_reason": "",
  2394. "knowledge_score": 77,
  2395. "knowledge_level": null,
  2396. "knowledge_evaluation": {
  2397. "quick_exclude": {
  2398. "result": "通过",
  2399. "reason": "内容不属于纯情感表达、生活记录、娱乐、营销、虚假信息或重复常识。"
  2400. },
  2401. "title_layer": {
  2402. "has_knowledge_direction": true,
  2403. "reason": "标题明确指明了内容将教授“自制表情包”的方法。"
  2404. },
  2405. "image_layer": {
  2406. "knowledge_presentation": {
  2407. "match": true,
  2408. "reason": "图片展示了一系列表情包图例,暗示这些图例是制作过程中可能需要使用的素材,配合文字引导,构成方法性知识的一部分。"
  2409. },
  2410. "educational_value": {
  2411. "has_value": true,
  2412. "reason": "图片配合正文能教会他人如何使用模板制作表情包,具有教学意义。"
  2413. },
  2414. "structure_level": {
  2415. "structured": true,
  2416. "reason": "图片提供了一系列可用的无面部表情包素材,具有一定的结构化,配合文字步骤即可形成教程。"
  2417. },
  2418. "practicality": {
  2419. "practical": true,
  2420. "reason": "提供了制作表情包的素材或模板,具有实际应用价值。"
  2421. },
  2422. "information_density": {
  2423. "level": "中",
  2424. "reason": "图片提供了多种表情包模板,可以视为多个可用的素材,但未直接呈现步骤或原理。"
  2425. },
  2426. "overall": "传递知识"
  2427. },
  2428. "text_layer": {
  2429. "information_gain": {
  2430. "has_gain": true,
  2431. "reason": "正文提供了具体的“自制表情包”操作步骤,包括使用醒图导入表情图、截图、导入图片、抠图和放置五官,是明确的新方法。"
  2432. },
  2433. "verifiability": {
  2434. "verifiable": true,
  2435. "reason": "描述的操作步骤是可验证和可复现的实际操作方法。"
  2436. },
  2437. "knowledge_type": {
  2438. "type": "方法性知识",
  2439. "reason": "正文明确描述了制作表情包的步骤和操作方法。"
  2440. },
  2441. "overall": "有知识支撑"
  2442. },
  2443. "judgment_logic": "该帖子通过了快速排除,标题有明确的知识指向。图片层虽然主要是素材展示,但在正文的引导下,图片内容可以被理解为实现“自制表情包”这一方法性知识所需的关键组成部分。正文层明确提供了可操作、可验证的“自制表情包”步骤,满足了信息增量和知识类型归属的要求,是典型的方法性知识。因此,内容整体被判定为知识。",
  2444. "core_evidence": [
  2445. "正文提供了清晰的自制表情包的操作步骤(醒图导入、放大截图、抠图、放置五官)。",
  2446. "标题明确指出内容是关于“自制表情包教程”,具有知识主题。",
  2447. "图片提供了多样化的无表情面部素材,可以作为方法性知识的实践载体。"
  2448. ],
  2449. "issues": [],
  2450. "conclusion": "该帖子属于知识,因为它提供了清晰、可操作的自制表情包的方法和步骤,具有实际学习价值。"
  2451. },
  2452. "post_relevance_score": null,
  2453. "relevance_level": "",
  2454. "relevance_reason": "",
  2455. "relevance_conclusion": "",
  2456. "relevance_evaluation": null,
  2457. "is_content_knowledge": true,
  2458. "purpose_score": 78,
  2459. "category_score": 85,
  2460. "final_score": 80.1,
  2461. "match_level": "基本匹配",
  2462. "evaluator_version": "v3.0",
  2463. "content_knowledge_evaluation": {
  2464. "is_content_knowledge": true,
  2465. "final_score": 77,
  2466. "level": "⭐⭐⭐⭐ 良好内容知识",
  2467. "quick_exclude": {
  2468. "result": "否",
  2469. "reason": "内容提供了制作表情包的方法,非纯展示。"
  2470. },
  2471. "dimension_scores": {
  2472. "image_layer": {
  2473. "creation_method": {
  2474. "score": 15,
  2475. "reason": "图片展示了多个待用表情图,并有成品效果图,但制作步骤未直接在图片中展示,需要结合正文理解。"
  2476. },
  2477. "knowledge_system": {
  2478. "score": 8,
  2479. "reason": "图片多为素材展示,未形成明确的制作步骤流程,需要正文辅助。"
  2480. },
  2481. "teaching_annotation": {
  2482. "score": 4,
  2483. "reason": "图片中无任何教学标注,如序号、箭头、文字说明等,主要为素材和最终效果展示。"
  2484. },
  2485. "method_reusability": {
  2486. "score": 10,
  2487. "reason": "制作表情包抠图/合成的方法具有较高的通用性,可应用于其他图片编辑场景。"
  2488. },
  2489. "principle_case": {
  2490. "score": 10,
  2491. "reason": "图片提供了可组合的表情包素材,并展示了成品效果,可以理解为案例与可应用素材的结合,但原理说明不足。"
  2492. },
  2493. "subtotal": 47
  2494. },
  2495. "text_layer": {
  2496. "method_description": {
  2497. "score": 10,
  2498. "reason": "正文提供了详细的两步制作方法,包括工具使用和具体操作流程。"
  2499. },
  2500. "knowledge_summary": {
  2501. "score": 10,
  2502. "reason": "正文虽然简短,但直接概括了制作表情包的核心步骤,具有可操作性和总结性。"
  2503. },
  2504. "subtotal": 20
  2505. },
  2506. "title_layer": {
  2507. "content_direction": {
  2508. "score": 10,
  2509. "reason": "标题明确指出'自制表情包教程',直接指向制作方法和教程类内容。"
  2510. },
  2511. "subtotal": 10
  2512. }
  2513. },
  2514. "core_evidence": [
  2515. "正文详细描述了2个制作步骤,具有极强的实操性:'1️⃣醒图导入以上表情图,放大截图就行没水印 2️⃣再导入一张自己的图片,把五官抠图下来放进表情图'",
  2516. "标题明确包含'教程'字样,指向创作方法。",
  2517. "图片提供了多样化的表情包底图素材,可供用户直接按照教程进行创作。"
  2518. ],
  2519. "issues": [
  2520. "图片层面缺乏直接的教学性标注和步骤展示,主要依赖正文进行说明。",
  2521. "知识体系化程度主要由正文提供,图片未形成完整逻辑链条。",
  2522. "帖子内容虽为教程,但较为简单,仅涵盖了表情包制作的初期步骤,缺乏更深入的创作技巧或原理。"
  2523. ],
  2524. "summary": "该帖子提供了明确的自制表情包教程,正文详细描述了操作步骤,且标题指向明确。尽管图片本身教学性标注较少,但作为素材和成果展示,与教程结合后具有较强的实操性和可迁移性,属于良好的内容知识。"
  2525. },
  2526. "purpose_evaluation": {
  2527. "purpose_score": 78,
  2528. "core_motivation": "用户想要学习如何制作猫咪表情包梗图。",
  2529. "image_value": "图片展示了多张可以用于制作表情包的底图,其中最后一张是猫咪的动漫形象。第一张图片明确写着“自制表情包”。图片提供了可用于创作的素材,但未直接展示“制作”过程或最终梗图效果。",
  2530. "title_intention": "标题为空,未能体现意图。",
  2531. "text_content": "正文提供了制作表情包的简要教程步骤,指导用户如何使用编辑工具抠图和导入图片。",
  2532. "match_level": "基本匹配",
  2533. "core_basis": "需求的核心是“制作”,正文提供教程步骤,图片提供表情包底图素材。虽然图片未能直接展示“如何制作梗图”,但和正文结合,能满足制作表情包的动机,且最后一张是猫咪相关的表情,符合需求后半段。"
  2534. },
  2535. "category_evaluation": {
  2536. "category_score": 85,
  2537. "original_category": {
  2538. "核心主体": "表情包",
  2539. "关键限定词": [
  2540. "制作",
  2541. "猫咪",
  2542. "梗图"
  2543. ]
  2544. },
  2545. "actual_category": {
  2546. "图片主体": "表情包框架/空白动物或人物基础图",
  2547. "图片限定特征": [
  2548. "猫咪形象",
  2549. "熊猫形象",
  2550. "小人形象"
  2551. ],
  2552. "标题品类": "表情包",
  2553. "正文品类": "表情包教程"
  2554. },
  2555. "match_level": "高度匹配",
  2556. "subject_match": "核心主体“表情包”完全一致",
  2557. "qualifier_match": "“制作”通过教程体现匹配;“猫咪”在图片中出现,但非全部图片;“梗图”未明确体现。",
  2558. "core_basis": "帖子图片展示了多种可用于制作表情包的底图,其中包含了明确的“猫咪”形象,且标题和正文都围绕“自制表情包教程”展开,与需求高度契合,但非所有图片都是猫咪底图。"
  2559. }
  2560. },
  2561. "post_679086f0000000001703826a_0_8": {
  2562. "type": "post",
  2563. "query": "[R] ",
  2564. "level": 13,
  2565. "relevance_score": 0,
  2566. "strategy": "帖子",
  2567. "iteration": 1,
  2568. "is_selected": true,
  2569. "note_id": "679086f0000000001703826a",
  2570. "note_url": "https://www.xiaohongshu.com/explore/679086f0000000001703826a",
  2571. "body_text": "自己做表情包,春节快到了,何不利用通义APP的“AI表情包大师”来自制一些可爱的拜年表情呢?这样可以让你的祝福信息显得更",
  2572. "images": [
  2573. "https://ci.xiaohongshu.com/1040g00831cuqhv9egs905ps1r0khji99ce8tmrg?imageView2/2/w/1080/format/webp",
  2574. "https://ci.xiaohongshu.com/1040g00831cuqhv9egs705ps1r0khji99j25k998?imageView2/2/w/1080/format/webp",
  2575. "https://ci.xiaohongshu.com/1040g00831cuqhv9egs805ps1r0khji99uhia6co?imageView2/2/w/1080/format/webp",
  2576. "https://ci.xiaohongshu.com/1040g00831cuqhv9egs8g5ps1r0khji99ap9hqcg?imageView2/2/w/1080/format/webp",
  2577. "https://ci.xiaohongshu.com/1040g00831cuqhv9egsbg5ps1r0khji99rr95fbo?imageView2/2/w/1080/format/webp"
  2578. ],
  2579. "image_list": [
  2580. {
  2581. "image_url": "https://ci.xiaohongshu.com/1040g00831cuqhv9egs905ps1r0khji99ce8tmrg?imageView2/2/w/1080/format/webp"
  2582. },
  2583. {
  2584. "image_url": "https://ci.xiaohongshu.com/1040g00831cuqhv9egs705ps1r0khji99j25k998?imageView2/2/w/1080/format/webp"
  2585. },
  2586. {
  2587. "image_url": "https://ci.xiaohongshu.com/1040g00831cuqhv9egs805ps1r0khji99uhia6co?imageView2/2/w/1080/format/webp"
  2588. },
  2589. {
  2590. "image_url": "https://ci.xiaohongshu.com/1040g00831cuqhv9egs8g5ps1r0khji99ap9hqcg?imageView2/2/w/1080/format/webp"
  2591. },
  2592. {
  2593. "image_url": "https://ci.xiaohongshu.com/1040g00831cuqhv9egsbg5ps1r0khji99rr95fbo?imageView2/2/w/1080/format/webp"
  2594. }
  2595. ],
  2596. "interact_info": {
  2597. "liked_count": 55,
  2598. "collected_count": 24,
  2599. "comment_count": 7,
  2600. "shared_count": 4
  2601. },
  2602. "extraction": null,
  2603. "is_knowledge": true,
  2604. "knowledge_reason": "",
  2605. "knowledge_score": 87,
  2606. "knowledge_level": null,
  2607. "knowledge_evaluation": {
  2608. "quick_exclude": {
  2609. "result": "通过",
  2610. "reason": "内容不属于纯情感表达、生活记录、娱乐搞笑、营销或虚假信息。"
  2611. },
  2612. "title_layer": {
  2613. "has_knowledge_direction": true,
  2614. "reason": "标题明确指明了 '自己做表情包',暗示有制作方法类的知识。"
  2615. },
  2616. "image_layer": {
  2617. "knowledge_presentation": {
  2618. "match": true,
  2619. "reason": "图片以多图序列的方式展示了制作表情包的步骤,包含UI界面截图和操作指示。"
  2620. },
  2621. "educational_value": {
  2622. "has_value": true,
  2623. "reason": "图片清晰地展示了如何利用特定APP制作表情包,具有教学意义。"
  2624. },
  2625. "structure_level": {
  2626. "structured": true,
  2627. "reason": "图片按照操作流程(打开APP -> 输入指令 -> 选择功能 -> 点击制作)进行了结构化呈现。"
  2628. },
  2629. "practicality": {
  2630. "practical": true,
  2631. "reason": "提供了使用“通义APP AI表情包大师”制作表情包的具体方法,具有直接应用价值。"
  2632. },
  2633. "information_density": {
  2634. "level": "高",
  2635. "reason": "图片详细展示了多个操作步骤和界面,包含多个知识点(如何打开,如何输入,如何选择功能,如何制作)。"
  2636. },
  2637. "overall": "传递知识"
  2638. },
  2639. "text_layer": {
  2640. "information_gain": {
  2641. "has_gain": true,
  2642. "reason": "正文提示了利用“通义APP的AI表情包大师”制作拜年表情包的方法,提供了新的应用场景和工具信息。"
  2643. },
  2644. "verifiability": {
  2645. "verifiable": true,
  2646. "reason": "内容涉及APP功能使用,是基于事实和可验证的操作步骤。"
  2647. },
  2648. "knowledge_type": {
  2649. "type": "方法性知识, 应用性知识",
  2650. "reason": "内容提供了制作表情包的具体技能和操作流程,属于方法性知识;同时提供了工具使用和实践指南,属于应用性知识。"
  2651. },
  2652. "overall": "有知识支撑"
  2653. },
  2654. "judgment_logic": "该帖子通过了快速排除,标题有知识指向。图片层展示了清晰的操作步骤和教学价值,具有高度结构化和实用性,信息密度较高,明确传递了知识。正文层提供了新的工具和应用场景信息,属于方法性和应用性知识。综合评估,符合知识判定规则。",
  2655. "core_evidence": [
  2656. "图片以序列图形式详细展示了使用“通义APP”的“AI表情包大师”功能制作表情包的完整步骤。",
  2657. "正文明确引导用户利用特定APP制作拜年表情包,提供了工具和应用场景。"
  2658. ],
  2659. "issues": [],
  2660. "conclusion": "该帖子是知识。它提供了使用“通义APP”制作表情包的具体方法和步骤,属于方法性/应用性知识,具有明确的教学和实践指导价值。"
  2661. },
  2662. "post_relevance_score": null,
  2663. "relevance_level": "",
  2664. "relevance_reason": "",
  2665. "relevance_conclusion": "",
  2666. "relevance_evaluation": null,
  2667. "is_content_knowledge": true,
  2668. "purpose_score": 95,
  2669. "category_score": 45,
  2670. "final_score": 80,
  2671. "match_level": "基本匹配",
  2672. "evaluator_version": "v3.0",
  2673. "content_knowledge_evaluation": {
  2674. "is_content_knowledge": true,
  2675. "final_score": 87,
  2676. "level": "⭐⭐⭐⭐⭐ 优质内容知识",
  2677. "quick_exclude": {
  2678. "result": "否",
  2679. "reason": "内容提供了具体的操作步骤和工具使用方法,并非纯展示或单点元素展示。"
  2680. },
  2681. "dimension_scores": {
  2682. "image_layer": {
  2683. "creation_method": {
  2684. "score": 20,
  2685. "reason": "图片清晰展示了制作表情包的详细步骤,包括打开APP、输入指令、选择模板到 '做同款',有明确的操作指引。"
  2686. },
  2687. "knowledge_system": {
  2688. "score": 15,
  2689. "reason": "多图形成完整的操作流程体系(步骤1→2→3→4等),逻辑清晰,用户可按图示从头到尾完成制作。"
  2690. },
  2691. "teaching_annotation": {
  2692. "score": 15,
  2693. "reason": "图片中包含大量教学标注,如“打开通义”的文字和箭头、“输入:ai表情”的文字和箭头、“点击做同款”的文字和箭头,清晰易懂。"
  2694. },
  2695. "method_reusability": {
  2696. "score": 10,
  2697. "reason": "制作表情包的方法具有通用性,可以应用于不同的表情包制作或AI工具的使用场景,具有较高的可复用性。"
  2698. },
  2699. "principle_case": {
  2700. "score": 10,
  2701. "reason": "本帖主要侧重实操方法,不涉及深层创作原理,但通过展示一个具体的制作流程,将操作方法与案例结合,演示了工具如何使用以达到创作目的。"
  2702. },
  2703. "subtotal": 70
  2704. },
  2705. "text_layer": {
  2706. "method_description": {
  2707. "score": 10,
  2708. "reason": "正文明确提示了“利用通义APP的‘AI表情包大师’来自制一些可爱的拜年表情”,指明了工具和目的,与图片形成互补,进一步说明了操作方法。"
  2709. },
  2710. "knowledge_summary": {
  2711. "score": 7,
  2712. "reason": "正文虽未进行深度知识总结,但其引导性的语言“这样可以让你的祝福信息显得更”暗示了制作个性化表情包带来的价值,对创作目的有所总结。"
  2713. },
  2714. "subtotal": 17
  2715. },
  2716. "title_layer": {
  2717. "content_direction": {
  2718. "score": 10,
  2719. "reason": "标题“自己做表情包”明确指向制作类的知识内容,具有教程或方法类的指向性。"
  2720. },
  2721. "subtotal": 10
  2722. }
  2723. },
  2724. "core_evidence": [
  2725. "图片清晰展示了使用通义APP制作AI表情包的详细分步操作。",
  2726. "图片包含明确的教学标注,如箭头和文字提示,引导用户完成操作。",
  2727. "正文和标题共同指向如何“自己做表情包”这一具体的创作方法和工具使用。"
  2728. ],
  2729. "issues": [],
  2730. "summary": "该内容提供了利用“AI表情包大师”制作拜年表情包的详细图文教程,步骤清晰,操作性强,具有明确的创作方法指导。图片层教学标注丰富,正文也提供了明确的方法指向,属于优质内容知识。"
  2731. },
  2732. "purpose_evaluation": {
  2733. "purpose_score": 95,
  2734. "core_motivation": "用户想要学习如何制作猫咪表情包梗图",
  2735. "image_value": "图片清楚地展示了使用通义APP制作AI表情包的完整步骤,包括打开APP、输入指令、选择表情包模板以及制作同款的指引,提供了具体的操作流程。",
  2736. "title_intention": "标题“自己做表情包”明确表达了制作表情包的意图。",
  2737. "text_content": "正文引导用户使用“AI表情包大师”制作拜年表情,进一步强化了制作表情包的主题和实用场景。",
  2738. "match_level": "高度匹配",
  2739. "core_basis": "图片展示了制作表情包的完整、清晰、可执行步骤,直接满足了用户“如何制作”的核心动机。虽然内容是AI表情包,不是特指猫咪,但制作方法通用,且提供了具体的工具和流程。"
  2740. },
  2741. "category_evaluation": {
  2742. "category_score": 45,
  2743. "original_category": {
  2744. "核心主体": "猫咪表情包",
  2745. "关键限定词": [
  2746. "梗图",
  2747. "制作"
  2748. ]
  2749. },
  2750. "actual_category": {
  2751. "图片主体": "表情包制作",
  2752. "图片限定特征": [
  2753. "非猫咪",
  2754. "手机APP操作"
  2755. ],
  2756. "标题品类": "表情包",
  2757. "正文品类": "表情包"
  2758. },
  2759. "match_level": "中度相关",
  2760. "subject_match": "主体(表情包)一致,但限定词(猫咪)缺失",
  2761. "qualifier_match": "需求核心限定词'猫咪'未匹配,帖子图片主要展示的是真人婴儿表情包,非猫咪表情包。'制作'匹配。",
  2762. "core_basis": "需求的核心是'猫咪表情包',而帖子图片和内容是关于APP制作'表情包',但并未体现'猫咪'限定词,图片主要展示的是儿童表情包,与猫咪无关。主体一致,限定词大部分缺失。"
  2763. }
  2764. },
  2765. "post_65e3cd98000000000b0186bb_0_9": {
  2766. "type": "post",
  2767. "query": "[R] 卡皮巴拉表情包",
  2768. "level": 13,
  2769. "relevance_score": 0,
  2770. "strategy": "帖子",
  2771. "iteration": 1,
  2772. "is_selected": true,
  2773. "note_id": "65e3cd98000000000b0186bb",
  2774. "note_url": "https://www.xiaohongshu.com/explore/65e3cd98000000000b0186bb",
  2775. "body_text": "原图@多多手绘日记 #卡皮巴拉 #自制表情包 #表情包分享",
  2776. "images": [
  2777. "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u005oju8om8c0niuf0lue8?imageView2/2/w/1080/format/webp",
  2778. "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u0g5oju8om8c0nicg2jekg?imageView2/2/w/1080/format/webp",
  2779. "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u105oju8om8c0nihfjd0n0?imageView2/2/w/1080/format/webp",
  2780. "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u1g5oju8om8c0ni50m68k8?imageView2/2/w/1080/format/webp",
  2781. "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u205oju8om8c0niuvv14j0?imageView2/2/w/1080/format/webp",
  2782. "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u2g5oju8om8c0nio3lsjs8?imageView2/2/w/1080/format/webp",
  2783. "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u305oju8om8c0nin0mvmlo?imageView2/2/w/1080/format/webp",
  2784. "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u3g5oju8om8c0nie8g00g8?imageView2/2/w/1080/format/webp",
  2785. "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u405oju8om8c0niqi4kb58?imageView2/2/w/1080/format/webp",
  2786. "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u4g5oju8om8c0nibkusugg?imageView2/2/w/1080/format/webp"
  2787. ],
  2788. "image_list": [
  2789. {
  2790. "image_url": "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u005oju8om8c0niuf0lue8?imageView2/2/w/1080/format/webp"
  2791. },
  2792. {
  2793. "image_url": "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u0g5oju8om8c0nicg2jekg?imageView2/2/w/1080/format/webp"
  2794. },
  2795. {
  2796. "image_url": "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u105oju8om8c0nihfjd0n0?imageView2/2/w/1080/format/webp"
  2797. },
  2798. {
  2799. "image_url": "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u1g5oju8om8c0ni50m68k8?imageView2/2/w/1080/format/webp"
  2800. },
  2801. {
  2802. "image_url": "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u205oju8om8c0niuvv14j0?imageView2/2/w/1080/format/webp"
  2803. },
  2804. {
  2805. "image_url": "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u2g5oju8om8c0nio3lsjs8?imageView2/2/w/1080/format/webp"
  2806. },
  2807. {
  2808. "image_url": "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u305oju8om8c0nin0mvmlo?imageView2/2/w/1080/format/webp"
  2809. },
  2810. {
  2811. "image_url": "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u3g5oju8om8c0nie8g00g8?imageView2/2/w/1080/format/webp"
  2812. },
  2813. {
  2814. "image_url": "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u405oju8om8c0niqi4kb58?imageView2/2/w/1080/format/webp"
  2815. },
  2816. {
  2817. "image_url": "https://ci.xiaohongshu.com/1040g2sg30vs52teo5u4g5oju8om8c0nibkusugg?imageView2/2/w/1080/format/webp"
  2818. }
  2819. ],
  2820. "interact_info": {
  2821. "liked_count": 5297,
  2822. "collected_count": 3795,
  2823. "comment_count": 376,
  2824. "shared_count": 405
  2825. },
  2826. "extraction": null,
  2827. "is_knowledge": false,
  2828. "knowledge_reason": "",
  2829. "knowledge_score": null,
  2830. "knowledge_level": null,
  2831. "knowledge_evaluation": {
  2832. "quick_exclude": {
  2833. "result": "未通过",
  2834. "reason": "内容属于单纯展示(表情包作品)且是娱乐内容(搞笑、情绪表达),无知识提炼和价值。"
  2835. },
  2836. "title_layer": {
  2837. "has_knowledge_direction": false,
  2838. "reason": "标题“卡皮巴拉表情包”仅为内容的描述,不指向任何知识主题。"
  2839. },
  2840. "image_layer": {
  2841. "knowledge_presentation": {
  2842. "match": false,
  2843. "reason": "图片为一组卡皮巴拉的表情包,纯粹的情感和情绪表达,不包含信息图表或知识性标注。"
  2844. },
  2845. "educational_value": {
  2846. "has_value": false,
  2847. "reason": "图片无教学意义,不能教会他人方法、技能或原理。"
  2848. },
  2849. "structure_level": {
  2850. "structured": false,
  2851. "reason": "表情包虽然有多个,但彼此间没有逻辑组织或知识框架关联。"
  2852. },
  2853. "practicality": {
  2854. "practical": false,
  2855. "reason": "图片为娱乐性质的表情包,无实际应用价值,不能帮助解决实际问题。"
  2856. },
  2857. "information_density": {
  2858. "level": "低",
  2859. "reason": "图片不包含任何明确的知识点。"
  2860. },
  2861. "overall": "无知识价值"
  2862. },
  2863. "text_layer": {
  2864. "information_gain": {
  2865. "has_gain": false,
  2866. "reason": "正文仅是说明表情包来源和话题标签,没有提供任何新的信息或认知。"
  2867. },
  2868. "verifiability": {
  2869. "verifiable": false,
  2870. "reason": "正文内容是关于图片的标签和作者信息,不涉及可验证的事实或数据。"
  2871. },
  2872. "knowledge_type": {
  2873. "type": "无法归类",
  2874. "reason": "正文内容无法归类为事实、原理、方法、经验、概念或应用性知识。"
  2875. },
  2876. "overall": "无知识价值"
  2877. },
  2878. "judgment_logic": "根据第一步快速排除规则,该内容属于“单纯展示(作品展示,无知识提炼)”和“娱乐内容(表情包,情绪表达)”,因此直接判定为非知识。",
  2879. "core_evidence": [
  2880. "图片为卡皮巴拉表情包,属于纯粹的娱乐内容和情感表达。",
  2881. "正文简短且仅为标签和作者署名,无任何信息增量和知识提炼。",
  2882. "整个帖子没有提供任何可学习、可应用或具有可靠性的信息。"
  2883. ],
  2884. "issues": [],
  2885. "conclusion": "该帖子不属于知识。它仅是表情包作品的展示和情绪的传达,不包含任何知识性的信息或教育价值。"
  2886. },
  2887. "post_relevance_score": null,
  2888. "relevance_level": "",
  2889. "relevance_reason": "",
  2890. "relevance_conclusion": "",
  2891. "relevance_evaluation": null,
  2892. "is_content_knowledge": null,
  2893. "purpose_score": null,
  2894. "category_score": null,
  2895. "final_score": null,
  2896. "match_level": "",
  2897. "evaluator_version": "v3.0",
  2898. "content_knowledge_evaluation": null,
  2899. "purpose_evaluation": null,
  2900. "category_evaluation": null
  2901. },
  2902. "search_表情包怎么制作_r1_1": {
  2903. "type": "search_word",
  2904. "query": "[SEARCH] 表情包怎么制作",
  2905. "level": 12,
  2906. "relevance_score": 0.8749999999999999,
  2907. "strategy": "搜索词",
  2908. "iteration": 1,
  2909. "is_selected": true
  2910. },
  2911. "post_66ea4e30000000001e01964b_1_0": {
  2912. "type": "post",
  2913. "query": "[R] 教你DIY宝宝表情包~",
  2914. "level": 13,
  2915. "relevance_score": 0,
  2916. "strategy": "帖子",
  2917. "iteration": 1,
  2918. "is_selected": true,
  2919. "note_id": "66ea4e30000000001e01964b",
  2920. "note_url": "https://www.xiaohongshu.com/explore/66ea4e30000000001e01964b",
  2921. "body_text": "亲妈会做的有趣小事儿之一 拍很多宝宝的小表情,做成微信表情包😊 三步教你完成✅ 🉑美图秀秀,选择“图片美化",
  2922. "images": [
  2923. "https://ci.xiaohongshu.com/1040g008317sg969u3u705o4jptig9f90d1cgkpo?imageView2/2/w/1080/format/webp",
  2924. "https://ci.xiaohongshu.com/1040g008317sg969uju005o4jptig9f90779odk0?imageView2/2/w/1080/format/webp",
  2925. "https://ci.xiaohongshu.com/1040g008317sg969uju0g5o4jptig9f90dr2v328?imageView2/2/w/1080/format/webp",
  2926. "https://ci.xiaohongshu.com/1040g008317sg969uju105o4jptig9f90dm7ka6o?imageView2/2/w/1080/format/webp",
  2927. "https://ci.xiaohongshu.com/1040g008317sg969uju1g5o4jptig9f90sn9d1d8?imageView2/2/w/1080/format/webp",
  2928. "https://ci.xiaohongshu.com/1040g008317sg969uju205o4jptig9f90o1h9l0o?imageView2/2/w/1080/format/webp",
  2929. "https://ci.xiaohongshu.com/1040g008317sg969uju2g5o4jptig9f90juhvb88?imageView2/2/w/1080/format/webp"
  2930. ],
  2931. "image_list": [
  2932. {
  2933. "image_url": "https://ci.xiaohongshu.com/1040g008317sg969u3u705o4jptig9f90d1cgkpo?imageView2/2/w/1080/format/webp"
  2934. },
  2935. {
  2936. "image_url": "https://ci.xiaohongshu.com/1040g008317sg969uju005o4jptig9f90779odk0?imageView2/2/w/1080/format/webp"
  2937. },
  2938. {
  2939. "image_url": "https://ci.xiaohongshu.com/1040g008317sg969uju0g5o4jptig9f90dr2v328?imageView2/2/w/1080/format/webp"
  2940. },
  2941. {
  2942. "image_url": "https://ci.xiaohongshu.com/1040g008317sg969uju105o4jptig9f90dm7ka6o?imageView2/2/w/1080/format/webp"
  2943. },
  2944. {
  2945. "image_url": "https://ci.xiaohongshu.com/1040g008317sg969uju1g5o4jptig9f90sn9d1d8?imageView2/2/w/1080/format/webp"
  2946. },
  2947. {
  2948. "image_url": "https://ci.xiaohongshu.com/1040g008317sg969uju205o4jptig9f90o1h9l0o?imageView2/2/w/1080/format/webp"
  2949. },
  2950. {
  2951. "image_url": "https://ci.xiaohongshu.com/1040g008317sg969uju2g5o4jptig9f90juhvb88?imageView2/2/w/1080/format/webp"
  2952. }
  2953. ],
  2954. "interact_info": {
  2955. "liked_count": 2806,
  2956. "collected_count": 1509,
  2957. "comment_count": 65,
  2958. "shared_count": 1139
  2959. },
  2960. "extraction": null,
  2961. "is_knowledge": true,
  2962. "knowledge_reason": "",
  2963. "knowledge_score": 93,
  2964. "knowledge_level": null,
  2965. "knowledge_evaluation": {
  2966. "quick_exclude": {
  2967. "result": "通过",
  2968. "reason": "内容是关于制作表情包的教程,不属于纯情感表达、生活记录、展示、娱乐搞笑或虚假信息。"
  2969. },
  2970. "title_layer": {
  2971. "has_knowledge_direction": true,
  2972. "reason": "标题“教你DIY宝宝表情包~”明确指明是一个教学性质的内容,指向方法性知识。"
  2973. },
  2974. "image_layer": {
  2975. "knowledge_presentation": {
  2976. "match": true,
  2977. "reason": "图片包含清晰的步骤编号(1、2、3)和操作指引(红色圆圈),逐步展示了制作表情包的过程。"
  2978. },
  2979. "educational_value": {
  2980. "has_value": true,
  2981. "reason": "图片通过系列操作截图和引导,能够教会用户如何使用美图秀秀制作微信表情包。"
  2982. },
  2983. "structure_level": {
  2984. "structured": true,
  2985. "reason": "图片按数字顺序呈现操作步骤,逻辑清晰,结构化程度高。"
  2986. },
  2987. "practicality": {
  2988. "practical": true,
  2989. "reason": "提供制作表情包的具体方法和工具使用指南,具有很强的实用性。"
  2990. },
  2991. "information_density": {
  2992. "level": "高",
  2993. "reason": "包含选择美图秀秀编辑、裁剪为正方形、添加文字、导入微信表情等多个明确的知识点。"
  2994. },
  2995. "overall": "传递知识"
  2996. },
  2997. "text_layer": {
  2998. "information_gain": {
  2999. "has_gain": true,
  3000. "reason": "正文简要提炼了制作流程和工具,与图片教程形成互补,提供了实现“制作微信表情包”的新方法。"
  3001. },
  3002. "verifiability": {
  3003. "verifiable": true,
  3004. "reason": "操作步骤基于美图秀秀这一常用工具,实践可验证。"
  3005. },
  3006. "knowledge_type": {
  3007. "type": "方法性知识",
  3008. "reason": "内容详细阐述了制作微信表情包的具体步骤和操作方法。"
  3009. },
  3010. "overall": "有知识支撑"
  3011. },
  3012. "judgment_logic": "该帖子通过快速排除,标题明确指向知识,图片层和正文层都提供了明确的方法性知识,图片以清晰的步骤进行教学,正文提供了辅助信息,符合知识判定的所有标准。",
  3013. "core_evidence": [
  3014. "图片通过步骤编号和操作提示,清晰展示了制作表情包的每一个环节。",
  3015. "正文提及“三步教你完成✅ 🉑美图秀秀”,确认了工具和步骤的存在。",
  3016. "该内容教授了使用美图秀秀制作微信表情包的实用技能。"
  3017. ],
  3018. "issues": [],
  3019. "conclusion": "该帖子是知识,因为它提供了制作微信表情包的详细方法和步骤,属于明确的“方法性知识”,具有较强的实用性和学习价值。"
  3020. },
  3021. "post_relevance_score": null,
  3022. "relevance_level": "",
  3023. "relevance_reason": "",
  3024. "relevance_conclusion": "",
  3025. "relevance_evaluation": null,
  3026. "is_content_knowledge": true,
  3027. "purpose_score": 75,
  3028. "category_score": 25,
  3029. "final_score": 60,
  3030. "match_level": "部分匹配",
  3031. "evaluator_version": "v3.0",
  3032. "content_knowledge_evaluation": {
  3033. "is_content_knowledge": true,
  3034. "final_score": 93,
  3035. "level": "⭐⭐⭐⭐⭐ 优质内容知识",
  3036. "quick_exclude": {
  3037. "result": "否",
  3038. "reason": "内容提供了制作表情包的具体步骤和方法,并非纯展示或单次操作。"
  3039. },
  3040. "dimension_scores": {
  3041. "image_layer": {
  3042. "creation_method": {
  3043. "score": 20,
  3044. "reason": "图片清晰展示了制作微信表情包的三个主要步骤,包括美图秀秀编辑图片(裁剪、添加文字)和微信添加表情包的具体操作。"
  3045. },
  3046. "knowledge_system": {
  3047. "score": 15,
  3048. "reason": "多图形成了完整的操作流程,从拍摄、编辑到添加到微信,逻辑清晰,步骤连贯,构成了一个完整的知识体系。"
  3049. },
  3050. "teaching_annotation": {
  3051. "score": 15,
  3052. "reason": "图片中使用了明确的数字序号(1, 2, 3)、红色圈出关键操作按钮、以及箭头指示,教学标注非常清晰和完善。"
  3053. },
  3054. "method_reusability": {
  3055. "score": 10,
  3056. "reason": "制作表情包的方法(图片处理、文字添加、微信上传)具有很强的通用性,可应用于制作各种题材的表情包,不仅限于宝宝表情包。"
  3057. },
  3058. "principle_case": {
  3059. "score": 10,
  3060. "reason": "帖子直接以案例(宝宝表情包)为载体,清晰演示了制作的“方法”而非“原理”,但其方法本身就是一种创作原理的具体应用,且与案例结合紧密,展示了如何操作。"
  3061. },
  3062. "subtotal": 70
  3063. },
  3064. "text_layer": {
  3065. "method_description": {
  3066. "score": 10,
  3067. "reason": "正文明确提到“三步教你完成✅ 🉑美图秀秀,选择‘图片美化’”,与图片内容高度契合,提供了简洁而具体的步骤描述。"
  3068. },
  3069. "knowledge_summary": {
  3070. "score": 8,
  3071. "reason": "正文虽然简短,但通过“三步教你完成”概括了整体的制作流程,算是有一定的经验总结和要点提炼。"
  3072. },
  3073. "subtotal": 18
  3074. },
  3075. "title_layer": {
  3076. "content_direction": {
  3077. "score": 5,
  3078. "reason": "标题“教你DIY宝宝表情包~”明确包含“教你”和“DIY”等指向教程和方法的词汇,但没有直接使用“教程”、“技巧”等强指向词。"
  3079. },
  3080. "subtotal": 5
  3081. }
  3082. },
  3083. "core_evidence": [
  3084. "图片通过数字序号和标记清晰展示了制作表情包的3个具体步骤(美图秀秀裁剪图片、添加文字、微信添加表情)。",
  3085. "正文提及“三步教你完成✅ 🉑美图秀秀,选择'图片美化'”,验证了图片所示的步骤。",
  3086. "首图有“DIY教程 微信表情包 有手就会做”等文字,明确表明这是一个教学内容。",
  3087. "图片展示的方法是通用的图片编辑和微信表情添加流程,可复用于其他表情包制作。"
  3088. ],
  3089. "issues": [
  3090. "标题的指向性可以更强,如直接使用“教程”或“攻略”等词。"
  3091. ],
  3092. "summary": "该帖子提供了制作微信表情包的完整、清晰且具体的操作教程,图片和文字都明确指向创作方法和步骤,具有很高的教学实用性和方法通用性。整个流程体系化地讲解了如何通过工具实现创作,是一个优质的内容知识。"
  3093. },
  3094. "purpose_evaluation": {
  3095. "purpose_score": 75,
  3096. "core_motivation": "用户想学习如何制作猫咪表情包梗图,核心动机是学习和创作。",
  3097. "image_value": "图片展示了使用美图秀秀制作宝宝表情包的详细步骤,包括裁剪、添加文字等,提供了具体的操作流程和效果展示,具有较强的实用性。第一张图片展示了制作好的表情包效果和“DIY教程 微信表情包 有手就会做”的字样,强化了学习和创作的意图;其他图片详细拆解了制作表情包的步骤,能指导用户进行制作。虽然不是猫咪表情包,但制作逻辑是通用的。",
  3098. "title_intention": "标题“教你DIY宝宝表情包~”明确了内容是关于如何制作表情包的教程,与用户的创作动机相符。",
  3099. "text_content": "正文“三步教你完成✅ 🉑美图秀秀”进一步说明了制作工具和流程,与图片内容形成互补,增强了教程的完整性和可执行性。",
  3100. "match_level": "基本匹配",
  3101. "core_basis": "帖子提供了清晰、可操作的表情包制作教程,满足了用户“制作/学习”的核心动机。图片详细展示了制作步骤,具有较强的实用性。虽然对象是宝宝而非猫咪,但制作方法通用。"
  3102. },
  3103. "category_evaluation": {
  3104. "category_score": 25,
  3105. "original_category": {
  3106. "核心主体": "表情包",
  3107. "关键限定词": [
  3108. "猫咪",
  3109. "梗图",
  3110. "制作"
  3111. ]
  3112. },
  3113. "actual_category": {
  3114. "图片主体": "婴儿表情包制作教程",
  3115. "图片限定特征": [
  3116. "教程",
  3117. "制作",
  3118. "婴儿"
  3119. ],
  3120. "标题品类": "表情包制作教程",
  3121. "正文品类": "表情包制作教程"
  3122. },
  3123. "match_level": "不匹配",
  3124. "subject_match": "核心主体“表情包”匹配,但“猫咪”与“婴儿”不匹配",
  3125. "qualifier_match": "“制作”匹配,但“猫咪”和“梗图”不匹配",
  3126. "core_basis": "原始需求明确指出“猫咪”表情包,但帖子内容(图片、标题、正文)均围绕“婴儿”表情包制作展开,主体(猫咪vs婴儿)严重不符,虽然都有“表情包”和“制作”,但具体的限定主体完全不同。属于主体过度泛化。"
  3127. }
  3128. },
  3129. "post_668e06cd00000000250145fe_1_1": {
  3130. "type": "post",
  3131. "query": "[R] 如何把照片变成表情包!",
  3132. "level": 13,
  3133. "relevance_score": 0,
  3134. "strategy": "帖子",
  3135. "iteration": 1,
  3136. "is_selected": true,
  3137. "note_id": "668e06cd00000000250145fe",
  3138. "note_url": "https://www.xiaohongshu.com/explore/668e06cd00000000250145fe",
  3139. "body_text": "微信-我的-表情-设置-添加单个表情-添加 只能一个一个添加哦 #表情管理 #我是表情包 #每日表情包分享 #手机",
  3140. "images": [
  3141. "https://ci.xiaohongshu.com/1040g2sg3151cqcmp0k5g5ph1r8choq4phkf6g9o?imageView2/2/w/1080/format/webp",
  3142. "https://ci.xiaohongshu.com/1040g2sg3151cqcmp0k505ph1r8choq4pe27ihoo?imageView2/2/w/1080/format/webp",
  3143. "https://ci.xiaohongshu.com/1040g2sg3151cqcmp0k4g5ph1r8choq4pvpkd1ro?imageView2/2/w/1080/format/webp",
  3144. "https://ci.xiaohongshu.com/1040g2sg3151cqcmp0k2g5ph1r8choq4pmbjtuqo?imageView2/2/w/1080/format/webp"
  3145. ],
  3146. "image_list": [
  3147. {
  3148. "image_url": "https://ci.xiaohongshu.com/1040g2sg3151cqcmp0k5g5ph1r8choq4phkf6g9o?imageView2/2/w/1080/format/webp"
  3149. },
  3150. {
  3151. "image_url": "https://ci.xiaohongshu.com/1040g2sg3151cqcmp0k505ph1r8choq4pe27ihoo?imageView2/2/w/1080/format/webp"
  3152. },
  3153. {
  3154. "image_url": "https://ci.xiaohongshu.com/1040g2sg3151cqcmp0k4g5ph1r8choq4pvpkd1ro?imageView2/2/w/1080/format/webp"
  3155. },
  3156. {
  3157. "image_url": "https://ci.xiaohongshu.com/1040g2sg3151cqcmp0k2g5ph1r8choq4pmbjtuqo?imageView2/2/w/1080/format/webp"
  3158. }
  3159. ],
  3160. "interact_info": {
  3161. "liked_count": 1424,
  3162. "collected_count": 721,
  3163. "comment_count": 108,
  3164. "shared_count": 391
  3165. },
  3166. "extraction": null,
  3167. "is_knowledge": true,
  3168. "knowledge_reason": "",
  3169. "knowledge_score": 83,
  3170. "knowledge_level": null,
  3171. "knowledge_evaluation": {
  3172. "quick_exclude": {
  3173. "result": "通过",
  3174. "reason": ""
  3175. },
  3176. "title_layer": {
  3177. "has_knowledge_direction": true,
  3178. "reason": "标题明确指引如何将照片变成表情包,是一个方法性知识主题。"
  3179. },
  3180. "image_layer": {
  3181. "knowledge_presentation": {
  3182. "match": true,
  3183. "reason": "图片通过屏幕截图和红色圈注的方式,清晰地展示了操作步骤。"
  3184. },
  3185. "educational_value": {
  3186. "has_value": true,
  3187. "reason": "图片提供了详细的视觉引导,教会用户如何操作,具有明确的教学意义。"
  3188. },
  3189. "structure_level": {
  3190. "structured": true,
  3191. "reason": "图片序列按照操作流程循序渐进,有清晰的步骤感和逻辑组织。"
  3192. },
  3193. "practicality": {
  3194. "practical": true,
  3195. "reason": "提供了直接可操作的手机应用功能使用方法,帮助用户解决制作表情包的实际问题。"
  3196. },
  3197. "information_density": {
  3198. "level": "高",
  3199. "reason": "每张图片都对应一个操作步骤,共同构成一个完整的知识流程。"
  3200. },
  3201. "overall": "传递知识"
  3202. },
  3203. "text_layer": {
  3204. "information_gain": {
  3205. "has_gain": true,
  3206. "reason": "正文补充了关键操作路径,并提示了“只能一个一个添加”的细节,提供了新的操作信息和注意事项。"
  3207. },
  3208. "verifiability": {
  3209. "verifiable": true,
  3210. "reason": "描述的是微信应用的具体功能和操作,是可验证的事实和方法。"
  3211. },
  3212. "knowledge_type": {
  3213. "type": "方法性知识, 应用性知识",
  3214. "reason": "提供了具体的操作步骤和使用工具的方法,属于方法性知识和应用性知识。"
  3215. },
  3216. "overall": "有知识支撑"
  3217. },
  3218. "judgment_logic": "通过快速排除,标题明确指向知识主题。图片层和正文层都提供了具体的、结构化的、有教育价值的操作方法。图片序列化展示步骤,正文补充细节和注意事项。多模态信息共同构成一个完整的方法性知识,符合知识判定标准。",
  3219. "core_evidence": [
  3220. "标题明确指出“如何把照片变成表情包”,设定了知识主题。",
  3221. "四张图片通过截图、红圈标注形式,清晰展示了微信中添加表情包的详细步骤。",
  3222. "正文补充了具体操作路径“微信-我的-表情-设置-添加单个表情-添加”,并强调了“只能一个一个添加”的注意事项,增强了知识完整性和实用性。"
  3223. ],
  3224. "issues": [],
  3225. "conclusion": "该帖子是知识。它通过图文结合的方式,清晰、有条理地提供了在微信中添加自定义表情包的具体操作方法,具有明确的教育和应用价值。"
  3226. },
  3227. "post_relevance_score": null,
  3228. "relevance_level": "",
  3229. "relevance_reason": "",
  3230. "relevance_conclusion": "",
  3231. "relevance_evaluation": null,
  3232. "is_content_knowledge": true,
  3233. "purpose_score": 40,
  3234. "category_score": 30,
  3235. "final_score": 37,
  3236. "match_level": "弱匹配",
  3237. "evaluator_version": "v3.0",
  3238. "content_knowledge_evaluation": {
  3239. "is_content_knowledge": true,
  3240. "final_score": 83,
  3241. "level": "⭐⭐⭐⭐ 良好内容知识",
  3242. "quick_exclude": {
  3243. "result": "否",
  3244. "reason": "标题明确指引了操作方法,图片展示了具体步骤,不属于纯展示型内容。"
  3245. },
  3246. "dimension_scores": {
  3247. "image_layer": {
  3248. "creation_method": {
  3249. "score": 20,
  3250. "reason": "图片清晰展示了将照片变为微信表情包的完整步骤,包括微信内路径选择、设置界面进入和添加单个表情的操作,有明确的操作指引。"
  3251. },
  3252. "knowledge_system": {
  3253. "score": 15,
  3254. "reason": "多图形成完整的操作步骤链条,从'我的'到'表情'到'设置'再到'添加单个表情',逻辑清晰,是典型的步骤1→2→3体系。"
  3255. },
  3256. "teaching_annotation": {
  3257. "score": 15,
  3258. "reason": "图片中大量使用了红色圆圈对关键操作区域进行了标注,引导用户视线,教学性强。"
  3259. },
  3260. "method_reusability": {
  3261. "score": 8,
  3262. "reason": "该方法是微信内部功能操作,具有普遍适用性,用户可以在微信中重复使用此方法添加任何照片为表情包,但仅限于微信平台。"
  3263. },
  3264. "principle_case": {
  3265. "score": 5,
  3266. "reason": "主要侧重于操作方法,没有过多涉及创作原理的提炼,但操作本身就是可复用的方法论。"
  3267. },
  3268. "subtotal": 63
  3269. },
  3270. "text_layer": {
  3271. "method_description": {
  3272. "score": 10,
  3273. "reason": "正文用简练的文字概括了添加表情包的关键步骤,'微信-我的-表情-设置-添加单个表情-添加',与图片内容相互印证。"
  3274. },
  3275. "knowledge_summary": {
  3276. "score": 5,
  3277. "reason": "正文提到'只能一个一个添加哦',这算是对操作的一个小提示或经验总结,但没有更深入的知识提炼。"
  3278. },
  3279. "subtotal": 15
  3280. },
  3281. "title_layer": {
  3282. "content_direction": {
  3283. "score": 10,
  3284. "reason": "标题'如何把照片变成表情包!'明确使用了'如何XX',直接指向一个制作方法或教程,指向性非常明确。"
  3285. },
  3286. "subtotal": 10
  3287. }
  3288. },
  3289. "core_evidence": [
  3290. "标题'如何把照片变成表情包!'明确表明是教程类内容。",
  3291. "四张图片通过红色圆圈标注,分步展示了从微信入口到添加表情的完整操作路径。",
  3292. "正文简要列出了操作步骤,与图片内容互补,强调了操作的可行性。"
  3293. ],
  3294. "issues": [
  3295. "虽然图片清晰展示了操作,但并未深入探讨表情包的设计技巧或创作原理,主要聚焦于工具操作层面。",
  3296. "正文知识总结程度较低,仅一个提示性信息。"
  3297. ],
  3298. "summary": "该帖子提供了将照片制作成微信表情包的详细操作教程,图片和文字均清晰地展示了具体的步骤和方法。内容具有较强的实用性和可操作性,属于明确的内容知识范畴,帮助用户提升了在社交媒体进行内容创作(表情包制作)的能力。"
  3299. },
  3300. "purpose_evaluation": {
  3301. "purpose_score": 40,
  3302. "core_motivation": "用户想学习如何制作带有猫咪元素的表情包梗图",
  3303. "image_value": "图片展示了微信中如何添加单个表情操作步骤,以及一些已添加的表情,但未展示制作表情包的教程或工具。其中包含猫咪表情是现有表情,而非自制或梗图。",
  3304. "title_intention": "标题“如何把照片变成表情包!”明确了将照片转化为表情包的意图。",
  3305. "text_content": "正文提供了微信添加表情的具体路径,但没有说明如何将照片'变成'表情包,只是如何'添加'已有的或制作好的表情。",
  3306. "match_level": "弱匹配",
  3307. "core_basis": "原始需求是要“制作”猫咪表情包“梗图”,帖子提供的只是“添加”表情的教程,且图中猫咪表情非梗图。图片虽有猫咪和表情,但与制作梗图的教程相去甚远,未能实质性满足创作动机。"
  3308. },
  3309. "category_evaluation": {
  3310. "category_score": 30,
  3311. "original_category": {
  3312. "核心主体": "猫咪表情包梗图",
  3313. "关键限定词": [
  3314. "制作",
  3315. "猫咪",
  3316. "梗图"
  3317. ]
  3318. },
  3319. "actual_category": {
  3320. "图片主体": "微信表情包添加功能界面、表情商店、已添加表情列表",
  3321. "图片限定特征": [
  3322. "手机截图",
  3323. "微信APP界面"
  3324. ],
  3325. "标题品类": "照片变表情包",
  3326. "正文品类": "微信添加表情操作教程"
  3327. },
  3328. "match_level": "弱匹配",
  3329. "subject_match": "帖子主体是关于如何将照片添加到微信作为表情包的操作教程,而非制作“猫咪表情包梗图”本身。",
  3330. "qualifier_match": "需求强调“猫咪”和“梗图”,帖子中图片未出现猫咪表情包梗图的制作过程,仅展示了添加表情包的界面。标题“照片变成表情包”与需求的核心“猫咪表情包梗图”存在泛化。",
  3331. "core_basis": "需求的核心是“猫咪表情包梗图”的“制作”,帖子的核心是“将照片转换为表情包后添加到微信”的“操作步骤”。图片未直接展示或制作梗图,也没有特别强调猫咪。"
  3332. }
  3333. },
  3334. "post_68282bbd000000002001f349_1_2": {
  3335. "type": "post",
  3336. "query": "[R] 表情包P图素材抠图用",
  3337. "level": 13,
  3338. "relevance_score": 0,
  3339. "strategy": "帖子",
  3340. "iteration": 1,
  3341. "is_selected": true,
  3342. "note_id": "68282bbd000000002001f349",
  3343. "note_url": "https://www.xiaohongshu.com/explore/68282bbd000000002001f349",
  3344. "body_text": "1️⃣醒图导入以上表情图,放大截图就行没水印 2️⃣再导入一张自己的图片,把五官抠图下来放进表情图 3️⃣调节: 亮度",
  3345. "images": [
  3346. "https://ci.xiaohongshu.com/1040g2sg31hitil85jie05oni2p56dljo632j3dg?imageView2/2/w/1080/format/webp",
  3347. "https://ci.xiaohongshu.com/1040g2sg31hitil85jieg5oni2p56dljof6v1da8?imageView2/2/w/1080/format/webp",
  3348. "https://ci.xiaohongshu.com/1040g2sg31hitil85jif05oni2p56dljoj488ivg?imageView2/2/w/1080/format/webp",
  3349. "https://ci.xiaohongshu.com/1040g2sg31hitil85jifg5oni2p56dljo7r8c1s8?imageView2/2/w/1080/format/webp",
  3350. "https://ci.xiaohongshu.com/1040g2sg31hitil85jig05oni2p56dljokvtrd08?imageView2/2/w/1080/format/webp",
  3351. "https://ci.xiaohongshu.com/1040g2sg31hitil85jigg5oni2p56dljocns0amo?imageView2/2/w/1080/format/webp",
  3352. "https://ci.xiaohongshu.com/1040g2sg31hitil85jih05oni2p56dljo6mdks3g?imageView2/2/w/1080/format/webp",
  3353. "https://ci.xiaohongshu.com/1040g2sg31hitil85jihg5oni2p56dljo0nmkpg8?imageView2/2/w/1080/format/webp",
  3354. "https://ci.xiaohongshu.com/1040g2sg31hitil85jii05oni2p56dljoj4dqga0?imageView2/2/w/1080/format/webp",
  3355. "https://ci.xiaohongshu.com/1040g2sg31hitil85jiig5oni2p56dljo0a13c88?imageView2/2/w/1080/format/webp"
  3356. ],
  3357. "image_list": [
  3358. {
  3359. "image_url": "https://ci.xiaohongshu.com/1040g2sg31hitil85jie05oni2p56dljo632j3dg?imageView2/2/w/1080/format/webp"
  3360. },
  3361. {
  3362. "image_url": "https://ci.xiaohongshu.com/1040g2sg31hitil85jieg5oni2p56dljof6v1da8?imageView2/2/w/1080/format/webp"
  3363. },
  3364. {
  3365. "image_url": "https://ci.xiaohongshu.com/1040g2sg31hitil85jif05oni2p56dljoj488ivg?imageView2/2/w/1080/format/webp"
  3366. },
  3367. {
  3368. "image_url": "https://ci.xiaohongshu.com/1040g2sg31hitil85jifg5oni2p56dljo7r8c1s8?imageView2/2/w/1080/format/webp"
  3369. },
  3370. {
  3371. "image_url": "https://ci.xiaohongshu.com/1040g2sg31hitil85jig05oni2p56dljokvtrd08?imageView2/2/w/1080/format/webp"
  3372. },
  3373. {
  3374. "image_url": "https://ci.xiaohongshu.com/1040g2sg31hitil85jigg5oni2p56dljocns0amo?imageView2/2/w/1080/format/webp"
  3375. },
  3376. {
  3377. "image_url": "https://ci.xiaohongshu.com/1040g2sg31hitil85jih05oni2p56dljo6mdks3g?imageView2/2/w/1080/format/webp"
  3378. },
  3379. {
  3380. "image_url": "https://ci.xiaohongshu.com/1040g2sg31hitil85jihg5oni2p56dljo0nmkpg8?imageView2/2/w/1080/format/webp"
  3381. },
  3382. {
  3383. "image_url": "https://ci.xiaohongshu.com/1040g2sg31hitil85jii05oni2p56dljoj4dqga0?imageView2/2/w/1080/format/webp"
  3384. },
  3385. {
  3386. "image_url": "https://ci.xiaohongshu.com/1040g2sg31hitil85jiig5oni2p56dljo0a13c88?imageView2/2/w/1080/format/webp"
  3387. }
  3388. ],
  3389. "interact_info": {
  3390. "liked_count": 3088,
  3391. "collected_count": 1586,
  3392. "comment_count": 68,
  3393. "shared_count": 315
  3394. },
  3395. "extraction": null,
  3396. "is_knowledge": true,
  3397. "knowledge_reason": "",
  3398. "knowledge_score": 88,
  3399. "knowledge_level": null,
  3400. "knowledge_evaluation": {
  3401. "quick_exclude": {
  3402. "result": "通过",
  3403. "reason": "内容不属于纯情感表达、作品展示、娱乐搞笑、虚假信息或重复常识"
  3404. },
  3405. "title_layer": {
  3406. "has_knowledge_direction": true,
  3407. "reason": "标题明确指出了P图素材的用途,暗示了方法性知识"
  3408. },
  3409. "image_layer": {
  3410. "knowledge_presentation": {
  3411. "match": true,
  3412. "reason": "图片展示了多个表情包边框和身体部分,是P图的素材,属于工具和资源展示"
  3413. },
  3414. "educational_value": {
  3415. "has_value": true,
  3416. "reason": "图片作为P图的素材,能够帮助用户完成特定图片编辑任务,具有教学意义"
  3417. },
  3418. "structure_level": {
  3419. "structured": false,
  3420. "reason": "图片本身是素材展示,无明确的逻辑组织或步骤,但与文字结合提供了使用指导"
  3421. },
  3422. "practicality": {
  3423. "practical": true,
  3424. "reason": "提供了直接可用于P图的素材,有明确的应用价值"
  3425. },
  3426. "information_density": {
  3427. "level": "中",
  3428. "reason": "图片提供了近10个表情包素材,每个素材本身是独立的P图元素"
  3429. },
  3430. "overall": "传递知识"
  3431. },
  3432. "text_layer": {
  3433. "information_gain": {
  3434. "has_gain": true,
  3435. "reason": "正文提供了使用这些表情包素材进行P图的步骤和技巧(如使用醒图,放大截图,抠图,调节亮度)"
  3436. },
  3437. "verifiability": {
  3438. "verifiable": true,
  3439. "reason": "操作步骤是可实践和验证的,基于常见的图片编辑软件功能"
  3440. },
  3441. "knowledge_type": {
  3442. "type": "方法性知识, 应用性知识",
  3443. "reason": "正文详细描述了制作表情包P图素材的操作流程和技巧,属于方法性知识和应用性知识"
  3444. },
  3445. "overall": "有知识支撑"
  3446. },
  3447. "judgment_logic": "该帖子通过了快速排除,标题有知识指向,图片提供了应用所需的素材,正文明确讲解了使用这些素材的方法和步骤。图片层和正文层都提供了知识价值,且正文提供了新信息并能归类为方法性和应用性知识,符合知识的判定规则。",
  3448. "core_evidence": [
  3449. "正文提供了明确的3步操作指南1️⃣醒图导入以上表情图,放大截图就行没水印 2️⃣再导入一张自己的图片,把五官抠图下来放进表情图 3️⃣调节: 亮度,是具体的操作方法。",
  3450. "图片展示了多种表情包的空白模板,是P图所需的核心素材,具有实用应用价值。"
  3451. ],
  3452. "issues": [],
  3453. "conclusion": "这是一个知识帖,因为它提供了具体的表情包P图方法和所需的素材,属于方法性和应用性知识,具有明确的实用指导价值。"
  3454. },
  3455. "post_relevance_score": null,
  3456. "relevance_level": "",
  3457. "relevance_reason": "",
  3458. "relevance_conclusion": "",
  3459. "relevance_evaluation": null,
  3460. "is_content_knowledge": true,
  3461. "purpose_score": 70,
  3462. "category_score": 85,
  3463. "final_score": 74.5,
  3464. "match_level": "基本匹配",
  3465. "evaluator_version": "v3.0",
  3466. "content_knowledge_evaluation": {
  3467. "is_content_knowledge": true,
  3468. "final_score": 88,
  3469. "level": "⭐⭐⭐⭐⭐ 优质内容知识",
  3470. "quick_exclude": {
  3471. "result": "否",
  3472. "reason": "内容提供了具体的P图步骤和方法,并非纯展示或单次操作。"
  3473. },
  3474. "dimension_scores": {
  3475. "image_layer": {
  3476. "creation_method": {
  3477. "score": 20,
  3478. "reason": "图片清晰展示了截取表情图、抠图五官、放入表情图等多个具体操作步骤,有明确指引。"
  3479. },
  3480. "knowledge_system": {
  3481. "score": 15,
  3482. "reason": "多图演示了从素材准备到具体P图操作,再到效果调整的完整流程,逻辑清晰。"
  3483. },
  3484. "teaching_annotation": {
  3485. "score": 15,
  3486. "reason": "图片包含了大量的教学标注,如圆形遮罩、文字说明、箭头指示等,非常直观易懂。"
  3487. },
  3488. "method_reusability": {
  3489. "score": 10,
  3490. "reason": "抠图和图片调整是通用的P图方法,可以应用于多种表情包或图片创作场景。"
  3491. },
  3492. "principle_case": {
  3493. "score": 10,
  3494. "reason": "将P图的基本原理(如素材选取、抠图、合成、调整)与具体的表情包案例结合,展示了其应用。"
  3495. },
  3496. "subtotal": 70
  3497. },
  3498. "text_layer": {
  3499. "method_description": {
  3500. "score": 10,
  3501. "reason": "正文提供了详细的3步P图操作流程:导入截图、抠图合成、调节,补充了图片展示的步骤。"
  3502. },
  3503. "knowledge_summary": {
  3504. "score": 8,
  3505. "reason": "正文虽然简短,但对操作步骤进行了清晰的总结,具有一定的指导性,但缺乏更深层次的技巧提炼。"
  3506. },
  3507. "subtotal": 18
  3508. },
  3509. "title_layer": {
  3510. "content_direction": {
  3511. "score": 10,
  3512. "reason": "标题“表情包P图素材抠图用”明确指向了具体的P图技能和使用方法,具有很强的操作指导性。"
  3513. },
  3514. "subtotal": 10
  3515. }
  3516. },
  3517. "core_evidence": [
  3518. "图片通过多张截图展示了P图的详细操作流程,包括素材截取、五官抠图、调整等。",
  3519. "图片中包含大量的文字说明和视觉指示(如圆形遮罩标注),明确了每一步的具体操作。",
  3520. "正文详细描述了“醒图导入表情图,放大截图”、“抠图五官放进表情图”、“调节亮度”等关键步骤。",
  3521. "标题直接指明了“P图”、“抠图”等操作性词汇,明确了内容教授的是一种制作方法。"
  3522. ],
  3523. "issues": [],
  3524. "summary": "该帖子提供了详细的表情包P图教程,通过图文结合清晰地展示了操作步骤、技巧和应用场景。内容具有高度的可操作性和通用性,属于典型的制作方法类内容知识。"
  3525. },
  3526. "purpose_evaluation": {
  3527. "purpose_score": 70,
  3528. "core_motivation": "用户想要学习如何制作猫咪表情包梗图,核心是创作(制作)。",
  3529. "image_value": "图片提供了大量现成的、待“制作”的表情包素材,其中一部分是猫咪形象(如'喵'字、猫头),与需求有直接关联。虽然没有展示制作过程,但提供了制作的必要元素。",
  3530. "title_intention": "标题“表情包P图素材抠图用”明确了内容是表情包素材的,且可用于P图和抠图,与用户的“制作”意图相关。",
  3531. "text_content": "正文提供了使用醒图导入表情图并进行放大截图、抠图(五官)、调节亮度的教程步骤,直接指导用户如何进行“制作”,有效补充了图片。",
  3532. "match_level": "基本匹配",
  3533. "core_basis": "帖子提供了大量猫咪相关的表情包素材图片,并详细指导了利用这些素材进行P图制作表情包梗图的步骤,基本满足了用户制作的目的。"
  3534. },
  3535. "category_evaluation": {
  3536. "category_score": 85,
  3537. "original_category": {
  3538. "核心主体": "猫咪表情包梗图",
  3539. "关键限定词": [
  3540. "猫咪",
  3541. "表情包",
  3542. "梗图",
  3543. "制作"
  3544. ]
  3545. },
  3546. "actual_category": {
  3547. "图片主体": "表情图素材",
  3548. "图片限定特征": [
  3549. "表情图",
  3550. "可用于P图"
  3551. ],
  3552. "标题品类": "表情包P图素材抠图用",
  3553. "正文品类": "表情包制作教程"
  3554. },
  3555. "match_level": "高度匹配",
  3556. "subject_match": "主体名词“表情包”和“梗图”与原始需求中的“表情包梗图”是相同概念。图片中显示的是用于制作表情包的底图,其中有一张明确标示“喵”的图,其余为类似卡通形象的P图素材",
  3557. "qualifier_match": "核心主体高度匹配,限定词“猫咪”在图片中有所体现但并非所有图片都是猫咪形象,因此限定词匹配度为大部分匹配",
  3558. "core_basis": "原始需求和帖子都围绕“表情包”展开。图片多为表情包素材,正文提供了制作方法。与“制作猫咪表情包梗图”的要求高度吻合。其中有猫咪形象的素材,其余为泛化的P图素材,因此在限定词“猫咪”上存在部分匹配,总体为高度匹配。"
  3559. }
  3560. },
  3561. "post_68bc2916000000001d00aa35_1_3": {
  3562. "type": "post",
  3563. "query": "[R] 萌娃表情包DIY✅附教程🈶素材",
  3564. "level": 13,
  3565. "relevance_score": 0,
  3566. "strategy": "帖子",
  3567. "iteration": 1,
  3568. "is_selected": true,
  3569. "note_id": "68bc2916000000001d00aa35",
  3570. "note_url": "https://www.xiaohongshu.com/explore/68bc2916000000001d00aa35",
  3571. "body_text": "笑不活了!自制宝宝表情包,怼人整活绝绝子 自从我用了崽的表情包以后,就没有办不明白的事儿[暗中观察R] [向右R]宝宝专",
  3572. "images": [
  3573. "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031m3e61dm500g5n208lo1irgfuoq7igg?imageView2/2/w/1080/format/webp",
  3574. "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031m3e61dm50105n208lo1irgf54jgt08?imageView2/2/w/1080/format/webp",
  3575. "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031m3e61dm501g5n208lo1irgf5mn55p8?imageView2/2/w/1080/format/webp"
  3576. ],
  3577. "image_list": [
  3578. {
  3579. "image_url": "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031m3e61dm500g5n208lo1irgfuoq7igg?imageView2/2/w/1080/format/webp"
  3580. },
  3581. {
  3582. "image_url": "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031m3e61dm50105n208lo1irgf54jgt08?imageView2/2/w/1080/format/webp"
  3583. },
  3584. {
  3585. "image_url": "https://ci.xiaohongshu.com/notes_pre_post/1040g3k031m3e61dm501g5n208lo1irgf5mn55p8?imageView2/2/w/1080/format/webp"
  3586. }
  3587. ],
  3588. "interact_info": {
  3589. "liked_count": 20,
  3590. "collected_count": 4,
  3591. "comment_count": 5,
  3592. "shared_count": 3
  3593. },
  3594. "extraction": null,
  3595. "is_knowledge": true,
  3596. "knowledge_reason": "",
  3597. "knowledge_score": 88,
  3598. "knowledge_level": null,
  3599. "knowledge_evaluation": {
  3600. "quick_exclude": {
  3601. "result": "通过",
  3602. "reason": ""
  3603. },
  3604. "title_layer": {
  3605. "has_knowledge_direction": true,
  3606. "reason": "标题明确指出“DIY”和“附教程”,指向方法性知识"
  3607. },
  3608. "image_layer": {
  3609. "knowledge_presentation": {
  3610. "match": true,
  3611. "reason": "图片包含教程页面截图和步骤,引导用户如何制作表情包"
  3612. },
  3613. "educational_value": {
  3614. "has_value": true,
  3615. "reason": "图片展示了制作宝宝表情包的界面和操作步骤,具有教学意义"
  3616. },
  3617. "structure_level": {
  3618. "structured": true,
  3619. "reason": "图片展示了编辑界面,虽然不是严格的流程图,但也呈现了操作的界面和预期效果"
  3620. },
  3621. "practicality": {
  3622. "practical": true,
  3623. "reason": "提供了制作表情包的具体方法,可直接应用"
  3624. },
  3625. "information_density": {
  3626. "level": "中",
  3627. "reason": "展示了制作表情包的概念、效果示例和操作界面,包含多个相关知识点"
  3628. },
  3629. "overall": "传递知识"
  3630. },
  3631. "text_layer": {
  3632. "information_gain": {
  3633. "has_gain": true,
  3634. "reason": "正文结合标题,介绍了自制宝宝表情包的方法和实用性"
  3635. },
  3636. "verifiability": {
  3637. "verifiable": true,
  3638. "reason": "关于如何制作表情包的方法是可验证的实践操作"
  3639. },
  3640. "knowledge_type": {
  3641. "type": "方法性知识",
  3642. "reason": "提供了制作表情包的具体步骤和操作方法"
  3643. },
  3644. "overall": "有知识支撑"
  3645. },
  3646. "judgment_logic": "该帖子通过快速排除,图片层明确传递了制作表情包的方法性知识,正文也提供了知识支撑和信息增量,且知识类型可归类为方法性知识,符合判定为“是知识”的所有条件。",
  3647. "core_evidence": [
  3648. "图片#2展示了表情包添加和设置的界面,呈现了实际操作的步骤和工具。",
  3649. "标题明确指出“萌娃表情包DIY✅附教程”,直接指向方法性知识。",
  3650. "正文提及“自制宝宝表情包”,呼应标题的方法性知识主题。"
  3651. ],
  3652. "issues": [],
  3653. "conclusion": "该帖子是知识,因为它提供了制作宝宝表情包的具体教程和方法,图片展示了操作界面,具有明确的实践指导价值。"
  3654. },
  3655. "post_relevance_score": null,
  3656. "relevance_level": "",
  3657. "relevance_reason": "",
  3658. "relevance_conclusion": "",
  3659. "relevance_evaluation": null,
  3660. "is_content_knowledge": true,
  3661. "purpose_score": 70,
  3662. "category_score": 10,
  3663. "final_score": 52,
  3664. "match_level": "部分匹配",
  3665. "evaluator_version": "v3.0",
  3666. "content_knowledge_evaluation": {
  3667. "is_content_knowledge": true,
  3668. "final_score": 88,
  3669. "level": "⭐⭐⭐⭐⭐ 优质内容知识",
  3670. "quick_exclude": {
  3671. "result": "否",
  3672. "reason": "内容提供了制作表情包的步骤和方法,并非纯展示或单一操作。"
  3673. },
  3674. "dimension_scores": {
  3675. "image_layer": {
  3676. "creation_method": {
  3677. "score": 20,
  3678. "reason": "图片清晰展示了萌娃表情包的DIY过程,包括选择照片、剪辑处理以及添加文字等多个具体操作步骤。"
  3679. },
  3680. "knowledge_system": {
  3681. "score": 15,
  3682. "reason": "图片按照步骤1、2、3的顺序,形成了一个完整的表情包制作流程,逻辑清晰。"
  3683. },
  3684. "teaching_annotation": {
  3685. "score": 15,
  3686. "reason": "图片中有箭头、文字说明等大量的教学标注,指导用户进行操作,清晰易懂。"
  3687. },
  3688. "method_reusability": {
  3689. "score": 10,
  3690. "reason": "制作表情包的方法具有通用性,可以应用于任何照片,并非仅限于萌娃表情包。"
  3691. },
  3692. "principle_case": {
  3693. "score": 8,
  3694. "reason": "图片展示了制作表情包的实际案例,并包含了制作方法,虽未明确提出背后原理,但方法与案例结合良好。"
  3695. },
  3696. "subtotal": 68
  3697. },
  3698. "text_layer": {
  3699. "method_description": {
  3700. "score": 10,
  3701. "reason": "正文提到了'自制宝宝表情包',虽然图片完整展示了步骤,正文没有详细描述,但图片教程清晰完整。"
  3702. },
  3703. "knowledge_summary": {
  3704. "score": 10,
  3705. "reason": "正文简要介绍了制作表情包的成果和乐趣,图片上的教程本身是一个完整的制作指南,具有知识的总结提炼。"
  3706. },
  3707. "subtotal": 20
  3708. },
  3709. "title_layer": {
  3710. "content_direction": {
  3711. "score": 10,
  3712. "reason": "标题明确包含'DIY'和'附教程'等词汇,直接指向创作制作方法类知识。"
  3713. },
  3714. "subtotal": 10
  3715. }
  3716. },
  3717. "core_evidence": [
  3718. "图片1、2详细展示了表情包制作的步骤和操作界面。",
  3719. "图片中包含大量的文字标注和箭头,指导用户如何操作。",
  3720. "标题明确指出是'DIY'和'教程',指向方法论。",
  3721. "制作表情包的方法可推广至其他照片,具有通用性。"
  3722. ],
  3723. "issues": [],
  3724. "summary": "该帖子提供了详细的萌娃表情包DIY教程,图片内容以视觉化的步骤和明确的教学标注,清晰展示了可操作的制作方法。标题和正文也明确指向了教程性质,具有高度的可复用性和实用性,属于优质内容知识。"
  3725. },
  3726. "purpose_evaluation": {
  3727. "purpose_score": 70,
  3728. "core_motivation": "用户想学习如何制作猫咪表情包梗图",
  3729. "image_value": "图片展示了DIY表情包的制作成品和制作界面,提供了部分制作表情包梗图的思路,但未涉及猫咪主题。",
  3730. "title_intention": "标题明确表示“表情包DIY附教程🈶素材”,意图是教授制作表情包的方法。",
  3731. "text_content": "正文提到“自制宝宝表情包”,进一步强调了制作表情包,但侧重于宝宝,没有涉及猫咪。",
  3732. "match_level": "部分满足动机",
  3733. "core_basis": "帖子提供了制作表情包梗图的方法和思路,与“如何制作”的动机相符,但主题是“萌娃”而非“猫咪”,因此只是部分满足。"
  3734. },
  3735. "category_evaluation": {
  3736. "category_score": 10,
  3737. "original_category": {
  3738. "核心主体": "表情包梗图",
  3739. "关键限定词": [
  3740. "猫咪",
  3741. "制作",
  3742. "如何"
  3743. ]
  3744. },
  3745. "actual_category": {
  3746. "图片主体": "萌娃表情包",
  3747. "图片限定特征": [
  3748. "教程",
  3749. "DIY"
  3750. ],
  3751. "标题品类": "萌娃表情包DIY",
  3752. "正文品类": "宝宝表情包制作"
  3753. },
  3754. "match_level": "不匹配",
  3755. "subject_match": "主体不一致,需求是“猫咪表情包”,帖子是“萌娃表情包”",
  3756. "qualifier_match": "限定词“猫咪”未匹配,但“表情包”、“制作”/“DIY”方面有弱相关。",
  3757. "core_basis": "原始需求明确指出“猫咪表情包梗图”,而帖子内容(图片、标题、正文)均围绕“萌娃/宝宝表情包”展开,核心主体完全不一致。"
  3758. }
  3759. },
  3760. "post_6876f73f0000000011002f0c_1_4": {
  3761. "type": "post",
  3762. "query": "[R] 小表情包制作diy教程",
  3763. "level": 13,
  3764. "relevance_score": 0,
  3765. "strategy": "帖子",
  3766. "iteration": 1,
  3767. "is_selected": true,
  3768. "note_id": "6876f73f0000000011002f0c",
  3769. "note_url": "https://www.xiaohongshu.com/explore/6876f73f0000000011002f0c",
  3770. "body_text": "1.醒图–人像–智能抠图抠一下,边边角角用快速画笔填充一下 2.美易–工具–调整大小,把抠出来的图改成萌萌的大小 这里统",
  3771. "images": [
  3772. "https://ci.xiaohongshu.com/1040g2sg31jvrkm7537a04a5222l1n0jlb6odpq0?imageView2/2/w/1080/format/webp",
  3773. "https://ci.xiaohongshu.com/1040g2sg31jvrkm7537ag4a5222l1n0jlj151t30?imageView2/2/w/1080/format/webp",
  3774. "https://ci.xiaohongshu.com/1040g2sg31jvrkm7537b04a5222l1n0jlhlk8a6o?imageView2/2/w/1080/format/webp",
  3775. "https://ci.xiaohongshu.com/1040g2sg31jvrkm7537bg4a5222l1n0jlrrvrc80?imageView2/2/w/1080/format/webp",
  3776. "https://ci.xiaohongshu.com/1040g2sg31jvrkm7537c04a5222l1n0jlgq5ts3o?imageView2/2/w/1080/format/webp",
  3777. "https://ci.xiaohongshu.com/1040g2sg31jvrkm7537cg4a5222l1n0jlpaujoqg?imageView2/2/w/1080/format/webp",
  3778. "https://ci.xiaohongshu.com/1040g2sg31jvrkm7537d04a5222l1n0jlu4tntr8?imageView2/2/w/1080/format/webp"
  3779. ],
  3780. "image_list": [
  3781. {
  3782. "image_url": "https://ci.xiaohongshu.com/1040g2sg31jvrkm7537a04a5222l1n0jlb6odpq0?imageView2/2/w/1080/format/webp"
  3783. },
  3784. {
  3785. "image_url": "https://ci.xiaohongshu.com/1040g2sg31jvrkm7537ag4a5222l1n0jlj151t30?imageView2/2/w/1080/format/webp"
  3786. },
  3787. {
  3788. "image_url": "https://ci.xiaohongshu.com/1040g2sg31jvrkm7537b04a5222l1n0jlhlk8a6o?imageView2/2/w/1080/format/webp"
  3789. },
  3790. {
  3791. "image_url": "https://ci.xiaohongshu.com/1040g2sg31jvrkm7537bg4a5222l1n0jlrrvrc80?imageView2/2/w/1080/format/webp"
  3792. },
  3793. {
  3794. "image_url": "https://ci.xiaohongshu.com/1040g2sg31jvrkm7537c04a5222l1n0jlgq5ts3o?imageView2/2/w/1080/format/webp"
  3795. },
  3796. {
  3797. "image_url": "https://ci.xiaohongshu.com/1040g2sg31jvrkm7537cg4a5222l1n0jlpaujoqg?imageView2/2/w/1080/format/webp"
  3798. },
  3799. {
  3800. "image_url": "https://ci.xiaohongshu.com/1040g2sg31jvrkm7537d04a5222l1n0jlu4tntr8?imageView2/2/w/1080/format/webp"
  3801. }
  3802. ],
  3803. "interact_info": {
  3804. "liked_count": 339,
  3805. "collected_count": 156,
  3806. "comment_count": 11,
  3807. "shared_count": 11
  3808. },
  3809. "extraction": null,
  3810. "is_knowledge": true,
  3811. "knowledge_reason": "",
  3812. "knowledge_score": 90,
  3813. "knowledge_level": null,
  3814. "knowledge_evaluation": {
  3815. "quick_exclude": {
  3816. "result": "通过",
  3817. "reason": "内容是关于制作表情包的教程,不属于纯情感表达、娱乐搞笑等非知识类型。"
  3818. },
  3819. "title_layer": {
  3820. "has_knowledge_direction": true,
  3821. "reason": "标题明确指明是DIY教程,指向提供制作方法。"
  3822. },
  3823. "image_layer": {
  3824. "knowledge_presentation": {
  3825. "match": true,
  3826. "reason": "图片包含具体App界面截图,并有圈画指示关键操作,形成步骤序列。"
  3827. },
  3828. "educational_value": {
  3829. "has_value": true,
  3830. "reason": "图片通过视觉展示教会用户如何使用特定工具制作表情包的技能和具体操作步骤。"
  3831. },
  3832. "structure_level": {
  3833. "structured": true,
  3834. "reason": "图片按步骤序列展示了从抠图到调整大小再到添加表情包的清晰流程。"
  3835. },
  3836. "practicality": {
  3837. "practical": true,
  3838. "reason": "提供可直接应用于制作表情包的软件和操作方法,具有实用价值。"
  3839. },
  3840. "information_density": {
  3841. "level": "中",
  3842. "reason": "包含了至少两个主要知识点:使用醒图抠图和使用美易调整大小。"
  3843. },
  3844. "overall": "传递知识"
  3845. },
  3846. "text_layer": {
  3847. "information_gain": {
  3848. "has_gain": true,
  3849. "reason": "正文简要概括了使用醒图和美易进行抠图和调整尺寸的操作步骤,提供了明确的新方法。"
  3850. },
  3851. "verifiability": {
  3852. "verifiable": true,
  3853. "reason": "基于可操作的软件步骤,用户可以实际验证并完成。"
  3854. },
  3855. "knowledge_type": {
  3856. "type": "方法性知识",
  3857. "reason": "内容提供了制作表情包的具体技能和操作流程。"
  3858. },
  3859. "overall": "有知识支撑"
  3860. },
  3861. "judgment_logic": "该帖子通过了快速排除,标题明确指向知识内容。图片层清晰地通过步骤序列、标注等方式传递了制作表情包的方法和技能,具有教育价值、结构化和实用性。正文层提供了明确的新信息和可验证的方法,可归类为方法性知识。因此,符合判定为“是知识”的所有条件。",
  3862. "core_evidence": [
  3863. "图片清晰展示了在'醒图'和'美易'中进行抠图和调整大小的详细操作步骤,并有关键区域的圈画标注。",
  3864. "正文简明扼要地概括了制作过程的两个核心步骤和使用的App,与图片形成互补。",
  3865. "内容提供了一个完整的、可复现的表情包制作流程。"
  3866. ],
  3867. "issues": [],
  3868. "conclusion": "该社交媒体帖子是知识。它通过详细的图片步骤和简要文字,提供了制作小表情包的具体方法性知识和实用技巧。"
  3869. },
  3870. "post_relevance_score": null,
  3871. "relevance_level": "",
  3872. "relevance_reason": "",
  3873. "relevance_conclusion": "",
  3874. "relevance_evaluation": null,
  3875. "is_content_knowledge": true,
  3876. "purpose_score": 78,
  3877. "category_score": 65,
  3878. "final_score": 74.1,
  3879. "match_level": "基本匹配",
  3880. "evaluator_version": "v3.0",
  3881. "content_knowledge_evaluation": {
  3882. "is_content_knowledge": true,
  3883. "final_score": 90,
  3884. "level": "⭐⭐⭐⭐⭐ 优质内容知识",
  3885. "quick_exclude": {
  3886. "result": "否",
  3887. "reason": "标题明确指向教程,图片包含详细步骤和标注,并非纯展示或单次操作。"
  3888. },
  3889. "dimension_scores": {
  3890. "image_layer": {
  3891. "creation_method": {
  3892. "score": 20,
  3893. "reason": "图片详细展示了使用“醒图”和“美易”进行抠图、填充、调整大小的具体操作步骤,提供了清晰的创作方法。"
  3894. },
  3895. "knowledge_system": {
  3896. "score": 15,
  3897. "reason": "多图形成完整体系,从抠图到调整大小再到最终应用于表情包,步骤清晰,逻辑连贯。"
  3898. },
  3899. "teaching_annotation": {
  3900. "score": 15,
  3901. "reason": "图片中大量使用红色圈标注关键操作按钮,清晰指引用户操作,视觉教学元素丰富。"
  3902. },
  3903. "method_reusability": {
  3904. "score": 10,
  3905. "reason": "表情包制作的抠图、调整大小方法具有通用性,可应用于其他图片编辑和创作场景。"
  3906. },
  3907. "principle_case": {
  3908. "score": 10,
  3909. "reason": "虽然没有直接阐述“原理”,但通过具体工具操作(案例)展现了如何实现表情包制作(方法),案例与操作结合紧密。"
  3910. },
  3911. "subtotal": 70
  3912. },
  3913. "text_layer": {
  3914. "method_description": {
  3915. "score": 10,
  3916. "reason": "正文提供了简洁明了的步骤描述,包括使用“醒图”智能抠图和“美易”调整大小的操作,与图片内容互补。"
  3917. },
  3918. "knowledge_summary": {
  3919. "score": 10,
  3920. "reason": "正文作为图片操作的总结和概括,精炼了主要步骤,虽然篇幅短,但起到了总结提炼作用。"
  3921. },
  3922. "subtotal": 20
  3923. },
  3924. "title_layer": {
  3925. "content_direction": {
  3926. "score": 10,
  3927. "reason": "标题“小表情包制作diy教程”明确包含“制作”、“教程”等关键词,清晰指向创作制作类知识内容。"
  3928. },
  3929. "subtotal": 10
  3930. }
  3931. },
  3932. "core_evidence": [
  3933. "标题中明确提到“制作diy教程”",
  3934. "图片中包含大量的操作界面截图,并用红色圈出关键步骤和按钮",
  3935. "图片展示了从抠图到调整大小,再到最终应用的全流程",
  3936. "正文简要概括了图片中展示的制作步骤",
  3937. "图片内容指导用户如何使用具体工具(醒图、美易)进行创作"
  3938. ],
  3939. "issues": [],
  3940. "summary": "该帖子提供了详细的表情包制作DIY教程,通过图片和文字结合的方式,清晰展示了使用工具进行抠图和调整大小的具体操作步骤。内容具有较强的可操作性和普遍性,属于优质的内容知识。"
  3941. },
  3942. "purpose_evaluation": {
  3943. "purpose_score": 78,
  3944. "core_motivation": "学习如何创作猫咪表情包梗图",
  3945. "image_value": "图片展示了制作表情包的详细步骤,包括抠图、调整大小,并最终预览了制作好的表情包在聊天界面中的效果,实用性强。",
  3946. "title_intention": "标题明确说明是“表情包制作diy教程”。",
  3947. "text_content": "正文提供了制作表情包的具体软件和操作步骤,与图片内容互补,增加了实操性。",
  3948. "match_level": "基本匹配",
  3949. "core_basis": "帖子提供了制作表情包的完整教程,图片与文字结合详细指导了具体操作,基本满足了用户“如何制作”的动机,但未明确指出是“猫咪表情包梗图”,这是扣分点。"
  3950. },
  3951. "category_evaluation": {
  3952. "category_score": 65,
  3953. "original_category": {
  3954. "核心主体": "表情包制作",
  3955. "关键限定词": [
  3956. "猫咪",
  3957. "梗图",
  3958. "如何制作"
  3959. ]
  3960. },
  3961. "actual_category": {
  3962. "图片主体": "表情包制作教程(卡通形象)",
  3963. "图片限定特征": [
  3964. "教程",
  3965. "卡通形象",
  3966. "制作工具"
  3967. ],
  3968. "标题品类": "表情包制作diy教程",
  3969. "正文品类": "表情包制作教程(工具操作)"
  3970. },
  3971. "match_level": "基本匹配",
  3972. "subject_match": "帖子主体是表情包制作,原始需求是表情包制作,核心主体一致。",
  3973. "qualifier_match": "原始需求限定词“猫咪”、“梗图”未匹配。帖子图片实际展示的是卡通形象而非猫咪或梗图,教程内容也未提及猫咪或梗图。但是,两者都符合“如何制作”这一隐含的教程类限定词。",
  3974. "core_basis": "核心主体“表情包制作”完全匹配。但原始需求明确限定了“猫咪”和“梗图”两种特定类型的表情包,帖子图片和文字内容均未体现这两种限定,导致匹配度下降。分数在有部分限定词匹配的区间。图片中实际展示的是卡通形象表情包,而不是猫咪或梗图,存在一定程度的泛化。"
  3975. }
  3976. },
  3977. "post_68919d0e00000000220216b4_1_5": {
  3978. "type": "post",
  3979. "query": "[R] ",
  3980. "level": 13,
  3981. "relevance_score": 0,
  3982. "strategy": "帖子",
  3983. "iteration": 1,
  3984. "is_selected": true,
  3985. "note_id": "68919d0e00000000220216b4",
  3986. "note_url": "https://www.xiaohongshu.com/explore/68919d0e00000000220216b4",
  3987. "body_text": "自制表情包教程: 1️⃣醒图导入以上表情图,放大截图就行没水印 2️⃣再导入一张自己的图片,把五官抠图下来放进表情图",
  3988. "images": [
  3989. "https://ci.xiaohongshu.com/1040g00831kpsekkdio6g5odul4kk1svn359kl98?imageView2/2/w/1080/format/webp",
  3990. "https://ci.xiaohongshu.com/1040g00831kpsekkdio5g5odul4kk1svnr7nfq5o?imageView2/2/w/1080/format/webp",
  3991. "https://ci.xiaohongshu.com/1040g00831kpsekkdio2g5odul4kk1svn5v4s8a8?imageView2/2/w/1080/format/webp",
  3992. "https://ci.xiaohongshu.com/1040g00831kpsekkdio205odul4kk1svnuh1emdg?imageView2/2/w/1080/format/webp",
  3993. "https://ci.xiaohongshu.com/1040g00831kpsekkdio305odul4kk1svnjivj8eg?imageView2/2/w/1080/format/webp",
  3994. "https://ci.xiaohongshu.com/1040g00831kpsekkdio3g5odul4kk1svns99kgeg?imageView2/2/w/1080/format/webp",
  3995. "https://ci.xiaohongshu.com/1040g00831kpsekkdio605odul4kk1svndufkb0g?imageView2/2/w/1080/format/webp",
  3996. "https://ci.xiaohongshu.com/1040g00831kpsekkdio405odul4kk1svnstqmlco?imageView2/2/w/1080/format/webp",
  3997. "https://ci.xiaohongshu.com/1040g00831kpsekkdio4g5odul4kk1svnt4r4lm8?imageView2/2/w/1080/format/webp",
  3998. "https://ci.xiaohongshu.com/1040g00831kpsekkdio105odul4kk1svnqpq796g?imageView2/2/w/1080/format/webp",
  3999. "https://ci.xiaohongshu.com/1040g00831kpsekkdio005odul4kk1svnjnpm808?imageView2/2/w/1080/format/webp"
  4000. ],
  4001. "image_list": [
  4002. {
  4003. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio6g5odul4kk1svn359kl98?imageView2/2/w/1080/format/webp"
  4004. },
  4005. {
  4006. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio5g5odul4kk1svnr7nfq5o?imageView2/2/w/1080/format/webp"
  4007. },
  4008. {
  4009. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio2g5odul4kk1svn5v4s8a8?imageView2/2/w/1080/format/webp"
  4010. },
  4011. {
  4012. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio205odul4kk1svnuh1emdg?imageView2/2/w/1080/format/webp"
  4013. },
  4014. {
  4015. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio305odul4kk1svnjivj8eg?imageView2/2/w/1080/format/webp"
  4016. },
  4017. {
  4018. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio3g5odul4kk1svns99kgeg?imageView2/2/w/1080/format/webp"
  4019. },
  4020. {
  4021. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio605odul4kk1svndufkb0g?imageView2/2/w/1080/format/webp"
  4022. },
  4023. {
  4024. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio405odul4kk1svnstqmlco?imageView2/2/w/1080/format/webp"
  4025. },
  4026. {
  4027. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio4g5odul4kk1svnt4r4lm8?imageView2/2/w/1080/format/webp"
  4028. },
  4029. {
  4030. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio105odul4kk1svnqpq796g?imageView2/2/w/1080/format/webp"
  4031. },
  4032. {
  4033. "image_url": "https://ci.xiaohongshu.com/1040g00831kpsekkdio005odul4kk1svnjnpm808?imageView2/2/w/1080/format/webp"
  4034. }
  4035. ],
  4036. "interact_info": {
  4037. "liked_count": 2,
  4038. "collected_count": 3,
  4039. "comment_count": 0,
  4040. "shared_count": 1
  4041. },
  4042. "extraction": null,
  4043. "is_knowledge": true,
  4044. "knowledge_reason": "",
  4045. "knowledge_score": 83,
  4046. "knowledge_level": null,
  4047. "knowledge_evaluation": {
  4048. "quick_exclude": {
  4049. "result": "通过",
  4050. "reason": ""
  4051. },
  4052. "title_layer": {
  4053. "has_knowledge_direction": true,
  4054. "reason": "标题明确指明是教程,具有知识性方向。"
  4055. },
  4056. "image_layer": {
  4057. "knowledge_presentation": {
  4058. "match": false,
  4059. "reason": "图片主要展示的是表情图样本,没有信息图表或知识性标注。"
  4060. },
  4061. "educational_value": {
  4062. "has_value": false,
  4063. "reason": "图片本身无教学意义,只是展示素材。"
  4064. },
  4065. "structure_level": {
  4066. "structured": false,
  4067. "reason": "图片无清晰逻辑组织或步骤呈现。"
  4068. },
  4069. "practicality": {
  4070. "practical": false,
  4071. "reason": "图片是素材,无直接应用指导价值。"
  4072. },
  4073. "information_density": {
  4074. "level": "低",
  4075. "reason": "图片主要是空白表情包,无明确知识点。"
  4076. },
  4077. "overall": "无知识价值"
  4078. },
  4079. "text_layer": {
  4080. "information_gain": {
  4081. "has_gain": true,
  4082. "reason": "正文提供了具体的自制表情包的步骤和工具建议。"
  4083. },
  4084. "verifiability": {
  4085. "verifiable": true,
  4086. "reason": "正文提供了可操作、可验证的步骤。"
  4087. },
  4088. "knowledge_type": {
  4089. "type": "方法性知识",
  4090. "reason": "提供了制作表情包的具体方法和操作流程。"
  4091. },
  4092. "overall": "有知识支撑"
  4093. },
  4094. "judgment_logic": "该内容通过快速排除,图片层虽然无知识价值,但正文层提供了明确的方法性知识,包含信息增量且可验证,属于方法性知识。因此,综合判定为知识。",
  4095. "core_evidence": [
  4096. "正文提供了“自制表情包教程”的具体步骤,包括使用醒图导入图片、放大截图、抠图放置五官等。",
  4097. "该教程属于“方法性知识”,能够指导用户完成特定操作。",
  4098. "标题明确指向教程,具备知识方向。"
  4099. ],
  4100. "issues": [
  4101. "图片仅为表情包素材展示,未能直接传递知识或教学步骤,知识承载度主要依靠正文。"
  4102. ],
  4103. "conclusion": "该帖子提供了关于自制表情包的具体操作方法,属于方法性知识,虽图片无直接知识价值,但正文清晰提供了可学习的应用步骤,因此判定为知识。"
  4104. },
  4105. "post_relevance_score": null,
  4106. "relevance_level": "",
  4107. "relevance_reason": "",
  4108. "relevance_conclusion": "",
  4109. "relevance_evaluation": null,
  4110. "is_content_knowledge": true,
  4111. "purpose_score": 75,
  4112. "category_score": 78,
  4113. "final_score": 75.9,
  4114. "match_level": "基本匹配",
  4115. "evaluator_version": "v3.0",
  4116. "content_knowledge_evaluation": {
  4117. "is_content_knowledge": true,
  4118. "final_score": 83,
  4119. "level": "⭐⭐⭐⭐ 良好内容知识",
  4120. "quick_exclude": {
  4121. "result": "否",
  4122. "reason": "内容提供了制作表情包的步骤,并非纯展示或单次操作。"
  4123. },
  4124. "dimension_scores": {
  4125. "image_layer": {
  4126. "creation_method": {
  4127. "score": 15,
  4128. "reason": "图片展示了制作表情包的各个素材(空白表情和抠图素材),虽然没有操作步骤截图,但配合文字能理解其用意。"
  4129. },
  4130. "knowledge_system": {
  4131. "score": 12,
  4132. "reason": "多张图片展示了制作表情包所需的不同空白身体和抠图五官素材,形成制作的基础框架。"
  4133. },
  4134. "teaching_annotation": {
  4135. "score": 8,
  4136. "reason": "图片中缺少明显的教学标注,但有图片示例作为辅助。"
  4137. },
  4138. "method_reusability": {
  4139. "score": 10,
  4140. "reason": "制作表情包的方法具有通用性,可以应用于不同的图片素材来制作各种表情包。"
  4141. },
  4142. "principle_case": {
  4143. "score": 8,
  4144. "reason": "提供了制作表情包的“原理”(通过现有素材组合)和“案例”(各种空白表情图和可抠图五官)。"
  4145. },
  4146. "subtotal": 53
  4147. },
  4148. "text_layer": {
  4149. "method_description": {
  4150. "score": 10,
  4151. "reason": "正文明确描述了制作表情包的2个具体步骤:导入表情图截图、抠图五官放入表情图。"
  4152. },
  4153. "knowledge_summary": {
  4154. "score": 10,
  4155. "reason": "正文提供了制作表情包的制作方法,是一种简单的创作技巧总结。"
  4156. },
  4157. "subtotal": 20
  4158. },
  4159. "title_layer": {
  4160. "content_direction": {
  4161. "score": 10,
  4162. "reason": "标题明确指明“自制表情包教程”,直接指向制作方法和教程类内容。"
  4163. },
  4164. "subtotal": 10
  4165. }
  4166. },
  4167. "core_evidence": [
  4168. "标题明确为“自制表情包教程”",
  4169. "正文提供了制作表情包的2个关键步骤",
  4170. "图片提供了大量的空白表情图和可用于抠图的五官素材,作为制作方法的辅助材料"
  4171. ],
  4172. "issues": [
  4173. "图片缺乏详细的操作步骤截图或视觉教学标注,主要以素材展示为主,教学性主要依赖正文描述。"
  4174. ],
  4175. "summary": "该帖子属于良好的内容知识。标题和正文清晰地指明了制作表情包的教程和方法,图片提供了制作所需的素材。虽然图片缺乏详细的操作步骤图,但结合文字,整体提供了具有可迁移性的创作制作方法。"
  4176. },
  4177. "purpose_evaluation": {
  4178. "purpose_score": 75,
  4179. "core_motivation": "用户想要学习如何制作猫咪表情包梗图。",
  4180. "image_value": "图片展示了多个可以作为表情包基础的空白梗图模板,但猫咪相关的模板较少,且没有直接展示制作教程的步骤效果。",
  4181. "title_intention": "标题明确指出了内容是关于“自制表情包”的教程。",
  4182. "text_content": "正文提供了制作表情包的具体操作步骤,包括导入表情图、放大截图、导入个人图片及抠图五官等,为用户提供了实用的制作方法。",
  4183. "match_level": "基本匹配",
  4184. "core_basis": "帖子标题和正文明确提供了表情包制作教程,满足了用户“制作”的核心动机。图片提供了部分空白梗图,但缺乏猫咪梗图的丰富性以及教程步骤的视觉展示,影响了分数。"
  4185. },
  4186. "category_evaluation": {
  4187. "category_score": 78,
  4188. "original_category": {
  4189. "核心主体": "猫咪表情包梗图",
  4190. "关键限定词": [
  4191. "猫咪",
  4192. "表情包",
  4193. "梗图",
  4194. "制作"
  4195. ]
  4196. },
  4197. "actual_category": {
  4198. "图片主体": "表情图素材",
  4199. "图片限定特征": [
  4200. "卡通人物",
  4201. "熊猫",
  4202. "小狗",
  4203. "猫咪"
  4204. ],
  4205. "标题品类": "自制表情包教程",
  4206. "正文品类": "自制表情包教程"
  4207. },
  4208. "match_level": "高度匹配",
  4209. "subject_match": "核心主体“表情包”匹配,但“猫咪”为部分匹配(图片中有猫咪元素但不是主要构成)",
  4210. "qualifier_match": "限定词“表情包”匹配,“制作”意图匹配(教程)。“猫咪”部分匹配,缺少“梗图”的明确指示。",
  4211. "core_basis": "帖子图片展示了多种表情包创作素材,其中包含一个猫咪形象,与需求中的“猫咪表情包”高度相关。标题和正文明确提到了“自制表情包教程”,与需求中的“如何制作”强关联。虽然图片主要是表情包素材而非具体的“梗图”,但其品类在上下位关系上是高度相关的。"
  4212. }
  4213. },
  4214. "post_666978a7000000001c023418_1_6": {
  4215. "type": "post",
  4216. "query": "[R] 敲简单!宝宝聊天表情包这么做!",
  4217. "level": 13,
  4218. "relevance_score": 0,
  4219. "strategy": "帖子",
  4220. "iteration": 1,
  4221. "is_selected": true,
  4222. "note_id": "666978a7000000001c023418",
  4223. "note_url": "https://www.xiaohongshu.com/explore/666978a7000000001c023418",
  4224. "body_text": "做表情包小白攻略如图所示 - ⭐如何做表情包: 🍓🐰XX→裁剪成正方形→添加文字/贴纸/涂鸦 - ⭐如何变表情包",
  4225. "images": [
  4226. "https://ci.xiaohongshu.com/1040g0083141356erie6g5nrrfsqg8n9bn7k6bs0?imageView2/2/w/1080/format/webp",
  4227. "https://ci.xiaohongshu.com/1040g008313um3009hm3g5nrrfsqg8n9b1f85d6g?imageView2/2/w/1080/format/webp",
  4228. "https://ci.xiaohongshu.com/1040g008313um3009hm4g5nrrfsqg8n9b0tmqbo8?imageView2/2/w/1080/format/webp",
  4229. "https://ci.xiaohongshu.com/1040g008313um3009hm2g5nrrfsqg8n9b479e6oo?imageView2/2/w/1080/format/webp",
  4230. "https://ci.xiaohongshu.com/1040g008313um3009hm205nrrfsqg8n9bpii5bv8?imageView2/2/w/1080/format/webp"
  4231. ],
  4232. "image_list": [
  4233. {
  4234. "image_url": "https://ci.xiaohongshu.com/1040g0083141356erie6g5nrrfsqg8n9bn7k6bs0?imageView2/2/w/1080/format/webp"
  4235. },
  4236. {
  4237. "image_url": "https://ci.xiaohongshu.com/1040g008313um3009hm3g5nrrfsqg8n9b1f85d6g?imageView2/2/w/1080/format/webp"
  4238. },
  4239. {
  4240. "image_url": "https://ci.xiaohongshu.com/1040g008313um3009hm4g5nrrfsqg8n9b0tmqbo8?imageView2/2/w/1080/format/webp"
  4241. },
  4242. {
  4243. "image_url": "https://ci.xiaohongshu.com/1040g008313um3009hm2g5nrrfsqg8n9b479e6oo?imageView2/2/w/1080/format/webp"
  4244. },
  4245. {
  4246. "image_url": "https://ci.xiaohongshu.com/1040g008313um3009hm205nrrfsqg8n9bpii5bv8?imageView2/2/w/1080/format/webp"
  4247. }
  4248. ],
  4249. "interact_info": {
  4250. "liked_count": 398,
  4251. "collected_count": 165,
  4252. "comment_count": 165,
  4253. "shared_count": 113
  4254. },
  4255. "extraction": null,
  4256. "is_knowledge": true,
  4257. "knowledge_reason": "",
  4258. "knowledge_score": 85,
  4259. "knowledge_level": null,
  4260. "knowledge_evaluation": {
  4261. "quick_exclude": {
  4262. "result": "通过",
  4263. "reason": "内容不属于纯情感表达、生活记录、娱乐搞笑、营销或虚假信息。"
  4264. },
  4265. "title_layer": {
  4266. "has_knowledge_direction": true,
  4267. "reason": "标题明确指明了 '怎么做' 表情包,具有方法性知识导向。"
  4268. },
  4269. "image_layer": {
  4270. "knowledge_presentation": {
  4271. "match": true,
  4272. "reason": "图片展示了制作表情包的步骤界面,包括选择照片、裁剪、添加文字/贴纸等操作,通过视觉引导提供了方法。"
  4273. },
  4274. "educational_value": {
  4275. "has_value": true,
  4276. "reason": "图片详细展示了制作表情包的每个步骤,具有教育他人操作方法的功能。"
  4277. },
  4278. "structure_level": {
  4279. "structured": true,
  4280. "reason": "图片以多图序列的方式展示了从选择图片到编辑完成的步骤,结构化清晰。"
  4281. },
  4282. "practicality": {
  4283. "practical": true,
  4284. "reason": "提供制作表情包的实际操作方法,用户可以依据图片指南进行实践。"
  4285. },
  4286. "information_density": {
  4287. "level": "中",
  4288. "reason": "包含选择图片、裁剪、添加文字/贴纸等多个独立操作步骤。"
  4289. },
  4290. "overall": "传递知识"
  4291. },
  4292. "text_layer": {
  4293. "information_gain": {
  4294. "has_gain": true,
  4295. "reason": "正文提炼了制作表情包的核心步骤,补充了图片的视觉信息。"
  4296. },
  4297. "verifiability": {
  4298. "verifiable": true,
  4299. "reason": "基于手机应用操作的实际步骤,是可验证的经验和方法。"
  4300. },
  4301. "knowledge_type": {
  4302. "type": "方法性知识",
  4303. "reason": "属于教授如何制作表情包的操作方法和流程。"
  4304. },
  4305. "overall": "有知识支撑"
  4306. },
  4307. "judgment_logic": "该帖子通过了快速排除,标题和图片层都明确指向了方法性知识,正文也提供了知识支撑,内容具有实际操作指南,符合知识的定义和类型。",
  4308. "core_evidence": [
  4309. "标题明确引导用户如何制作表情包,指向方法性知识。",
  4310. "图片通过多张截图序列,完整展示了从选择照片到最终编辑的表情包制作流程,具有极高的实践指导价值。",
  4311. "正文对图片中的操作步骤进行了文字提炼和总结,强化了方法论的呈现。"
  4312. ],
  4313. "issues": [],
  4314. "conclusion": "该帖子是一个知识内容。它通过图文结合的方式,清晰地提供了一套制作表情包的方法和步骤,属于方法性知识,具有学习和应用价值。"
  4315. },
  4316. "post_relevance_score": null,
  4317. "relevance_level": "",
  4318. "relevance_reason": "",
  4319. "relevance_conclusion": "",
  4320. "relevance_evaluation": null,
  4321. "is_content_knowledge": true,
  4322. "purpose_score": 78,
  4323. "category_score": 45,
  4324. "final_score": 68.1,
  4325. "match_level": "部分匹配",
  4326. "evaluator_version": "v3.0",
  4327. "content_knowledge_evaluation": {
  4328. "is_content_knowledge": true,
  4329. "final_score": 85,
  4330. "level": "⭐⭐⭐⭐⭐ 优质内容知识",
  4331. "quick_exclude": {
  4332. "result": "否",
  4333. "reason": "标题非纯展示型,图片展示了具体步骤,有通用性操作"
  4334. },
  4335. "dimension_scores": {
  4336. "image_layer": {
  4337. "creation_method": {
  4338. "score": 20,
  4339. "reason": "图片详细展示了选择图片、裁剪、添加文字/贴纸/涂鸦等具体可操作的表情包制作方法"
  4340. },
  4341. "knowledge_system": {
  4342. "score": 15,
  4343. "reason": "多图形成完整体系,清晰展示了从素材选择到成品生成的制作步骤"
  4344. },
  4345. "teaching_annotation": {
  4346. "score": 15,
  4347. "reason": "图片中包含箭头、圈选等教学性标注,指导用户操作"
  4348. },
  4349. "method_reusability": {
  4350. "score": 10,
  4351. "reason": "表情包制作方法具有通用性,可应用于任意素材进行创作"
  4352. },
  4353. "principle_case": {
  4354. "score": 10,
  4355. "reason": "通过实际案例展示了表情包的制作流程,原理与案例结合紧密"
  4356. },
  4357. "subtotal": 70
  4358. },
  4359. "text_layer": {
  4360. "method_description": {
  4361. "score": 10,
  4362. "reason": "正文简明扼要地描述了表情包制作的步骤:选择素材、裁剪、添加文字/贴纸/涂鸦"
  4363. },
  4364. "knowledge_summary": {
  4365. "score": 5,
  4366. "reason": "正文提炼了制作表情包的核心步骤,但未进行更深入的经验总结"
  4367. },
  4368. "subtotal": 15
  4369. },
  4370. "title_layer": {
  4371. "content_direction": {
  4372. "score": 10,
  4373. "reason": "标题“敲简单!宝宝聊天表情包这么做!”明确指向了制作教程/方法类内容"
  4374. },
  4375. "subtotal": 10
  4376. }
  4377. },
  4378. "core_evidence": [
  4379. "图片清晰展示了表情包制作的每个步骤(选图、裁剪、加字/贴纸/涂鸦)",
  4380. "图片中使用箭头和圈选突出关键操作区域",
  4381. "正文提供了制作表情包的简要步骤说明",
  4382. "标题直接点明了“这么做”的教程性质"
  4383. ],
  4384. "issues": [
  4385. "正文的知识总结提炼不够深入,可以进一步细化在表情包设计时如何选择合适的表情、文字等,提升趣味性"
  4386. ],
  4387. "summary": "该帖子提供了制作宝宝表情包的详细步骤和方法指导,图片和文字内容结合紧密,具有实操性和较强的可迁移性。教学标注清晰,标题明确指向内容知识,整体属于优质内容知识。"
  4388. },
  4389. "purpose_evaluation": {
  4390. "purpose_score": 78,
  4391. "core_motivation": "用户想了解如何制作猫咪表情包梗图的教程",
  4392. "image_value": "图片展示了用美图秀秀制作宝宝表情包的流程,包括选择图片,裁剪,添加文字/贴纸等步骤,具有教程指导价值。",
  4393. "title_intention": "标题明确说明了是关于“宝宝聊天表情包”的制作方法,体现了“创作型”动机,只是主体是“宝宝”而非“猫咪”。",
  4394. "text_content": "正文简要提炼了制作表情包的几个步骤,与图片内容一致,提供了如何制作表情包的小白攻略。",
  4395. "match_level": "基本匹配",
  4396. "core_basis": "帖子提供了详细的表情包制作教程,流程清晰,图片完整展示了操作步骤,基本满足了用户“制作”表情包的动机。但核心主体是“宝宝”而非“猫咪”,缺少对猫咪表情包制作的针对性指导,因此未能完全匹配。"
  4397. },
  4398. "category_evaluation": {
  4399. "category_score": 45,
  4400. "original_category": {
  4401. "核心主体": "表情包",
  4402. "关键限定词": [
  4403. "猫咪",
  4404. "梗图",
  4405. "制作"
  4406. ]
  4407. },
  4408. "actual_category": {
  4409. "图片主体": "婴儿表情包制作教程",
  4410. "图片限定特征": [
  4411. "婴儿",
  4412. "美图秀秀操作界面",
  4413. "制作过程"
  4414. ],
  4415. "标题品类": "表情包制作教程(宝宝)",
  4416. "正文品类": "表情包制作小白攻略"
  4417. },
  4418. "match_level": "中度相关",
  4419. "subject_match": "核心主体“表情包”匹配,但限定词“猫咪”与帖子内容“婴儿”不符",
  4420. "qualifier_match": "“制作”这个行为限定词是匹配的,但“猫咪”限定词与帖子内容“婴儿”不符,且图片内容也没有“梗图”的特征",
  4421. "core_basis": "需求的核心主体是“猫咪表情包梗图”,帖子内容是“婴儿表情包制作教程”。虽然核心主体“表情包”一致,但关键限定词“猫咪”和“梗图”与帖子内容中的“婴儿”和教程制作流程有显著差异,存在主体过度泛化,因此分数中等偏下。"
  4422. }
  4423. },
  4424. "post_66d1312d000000001d014731_1_7": {
  4425. "type": "post",
  4426. "query": "[R] 亲妈都会干的一件事吧?",
  4427. "level": 13,
  4428. "relevance_score": 0,
  4429. "strategy": "帖子",
  4430. "iteration": 1,
  4431. "is_selected": true,
  4432. "note_id": "66d1312d000000001d014731",
  4433. "note_url": "https://www.xiaohongshu.com/explore/66d1312d000000001d014731",
  4434. "body_text": "宝宝表情好可爱 好丰富 忍不住做成了表情包 🤣🤣🤣做下来发现很多都能覆盖日常需要用的😀😀 教程: 1️⃣打开美",
  4435. "images": [
  4436. "https://ci.xiaohongshu.com/1040g2sg3173vftv63u005n822jilj3745uuqqpo?imageView2/2/w/1080/format/webp",
  4437. "https://ci.xiaohongshu.com/1040g2sg3174432a946705n822jilj374s0p48to?imageView2/2/w/1080/format/webp",
  4438. "https://ci.xiaohongshu.com/1040g2sg3174432a9467g5n822jilj374a82a4v8?imageView2/2/w/1080/format/webp",
  4439. "https://ci.xiaohongshu.com/1040g2sg3174432a946805n822jilj374i68c42o?imageView2/2/w/1080/format/webp",
  4440. "https://ci.xiaohongshu.com/1040g2sg3174432a9468g5n822jilj3744b02bpg?imageView2/2/w/1080/format/webp",
  4441. "https://ci.xiaohongshu.com/1040g2sg3174432a946905n822jilj374cqgp0e8?imageView2/2/w/1080/format/webp"
  4442. ],
  4443. "image_list": [
  4444. {
  4445. "image_url": "https://ci.xiaohongshu.com/1040g2sg3173vftv63u005n822jilj3745uuqqpo?imageView2/2/w/1080/format/webp"
  4446. },
  4447. {
  4448. "image_url": "https://ci.xiaohongshu.com/1040g2sg3174432a946705n822jilj374s0p48to?imageView2/2/w/1080/format/webp"
  4449. },
  4450. {
  4451. "image_url": "https://ci.xiaohongshu.com/1040g2sg3174432a9467g5n822jilj374a82a4v8?imageView2/2/w/1080/format/webp"
  4452. },
  4453. {
  4454. "image_url": "https://ci.xiaohongshu.com/1040g2sg3174432a946805n822jilj374i68c42o?imageView2/2/w/1080/format/webp"
  4455. },
  4456. {
  4457. "image_url": "https://ci.xiaohongshu.com/1040g2sg3174432a9468g5n822jilj3744b02bpg?imageView2/2/w/1080/format/webp"
  4458. },
  4459. {
  4460. "image_url": "https://ci.xiaohongshu.com/1040g2sg3174432a946905n822jilj374cqgp0e8?imageView2/2/w/1080/format/webp"
  4461. }
  4462. ],
  4463. "interact_info": {
  4464. "liked_count": 2378,
  4465. "collected_count": 1360,
  4466. "comment_count": 507,
  4467. "shared_count": 1128
  4468. },
  4469. "extraction": null,
  4470. "is_knowledge": false,
  4471. "knowledge_reason": "",
  4472. "knowledge_score": null,
  4473. "knowledge_level": null,
  4474. "knowledge_evaluation": {
  4475. "quick_exclude": {
  4476. "result": "未通过",
  4477. "reason": "内容属于娱乐搞笑类别,主要展示个人生活记录和情感表达,不含知识提炼。"
  4478. },
  4479. "title_layer": {
  4480. "has_knowledge_direction": false,
  4481. "reason": "标题为情感型表达,无明确知识指向。"
  4482. },
  4483. "image_layer": {
  4484. "knowledge_presentation": {
  4485. "match": false,
  4486. "reason": "图片展示的是宝宝表情包样式,纯属娱乐和个人情感表达,无信息图表、知识性标注或知识体系。"
  4487. },
  4488. "educational_value": {
  4489. "has_value": false,
  4490. "reason": "图片不教授任何方法、技能或原理,不提供可学习的步骤或解决方案。"
  4491. },
  4492. "structure_level": {
  4493. "structured": false,
  4494. "reason": "图片内容为碎片化的表情包展示,无清晰的逻辑组织、步骤或要点结构。"
  4495. },
  4496. "practicality": {
  4497. "practical": false,
  4498. "reason": "图片内容为娱乐性的表情包,无实际应用价值来解决问题。"
  4499. },
  4500. "information_density": {
  4501. "level": "低",
  4502. "reason": "图片不包含明确的知识点,没有信息增量。"
  4503. },
  4504. "overall": "无知识价值"
  4505. },
  4506. "text_layer": {
  4507. "information_gain": {
  4508. "has_gain": false,
  4509. "reason": "正文仅描述制作表情包的过程和感受,未提供新的信息、认知或方法。"
  4510. },
  4511. "verifiability": {
  4512. "verifiable": false,
  4513. "reason": "正文是纯主观感受和操作记录,无基于事实、数据或可验证的经验。"
  4514. },
  4515. "knowledge_type": {
  4516. "type": "无法归类",
  4517. "reason": "内容无法归类为事实、原理、方法、经验、概念或应用性知识。"
  4518. },
  4519. "overall": "无知识价值"
  4520. },
  4521. "judgment_logic": "本内容未通过快速排除,因为其属于娱乐搞笑和个人生活记录,图片层和正文层均无知识价值。图片主要展示宝宝表情包,正文仅简述制作过程及感受,均不提供任何有价值的知识内容。",
  4522. "core_evidence": [
  4523. "图片为宝宝表情包展示,属于娱乐内容。",
  4524. "正文描述制作表情包的感受,属于个人记录和情感表达。",
  4525. "内容缺乏任何知识性描述、教学或指导。"
  4526. ],
  4527. "issues": [],
  4528. "conclusion": "该帖子不是知识。内容主要为宝宝表情包的展示和个人情感分享,属于娱乐内容和生活记录,不具有任何形式的知识价值。"
  4529. },
  4530. "post_relevance_score": null,
  4531. "relevance_level": "",
  4532. "relevance_reason": "",
  4533. "relevance_conclusion": "",
  4534. "relevance_evaluation": null,
  4535. "is_content_knowledge": null,
  4536. "purpose_score": null,
  4537. "category_score": null,
  4538. "final_score": null,
  4539. "match_level": "",
  4540. "evaluator_version": "v3.0",
  4541. "content_knowledge_evaluation": null,
  4542. "purpose_evaluation": null,
  4543. "category_evaluation": null
  4544. },
  4545. "post_66b23cd4000000000503384f_1_8": {
  4546. "type": "post",
  4547. "query": "[R] 90后上班族~天天靠作表情包加",
  4548. "level": 13,
  4549. "relevance_score": 0,
  4550. "strategy": "帖子",
  4551. "iteration": 1,
  4552. "is_selected": true,
  4553. "note_id": "66b23cd4000000000503384f",
  4554. "note_url": "https://www.xiaohongshu.com/explore/66b23cd4000000000503384f",
  4555. "body_text": "当初只是抱着试试的心态用ai作了表情包,没想到就成功啦敲🈵意哒~ 🈶愿意一起学习用ai作表情包的宝子嘛? 🤖详细步",
  4556. "images": [
  4557. "https://ci.xiaohongshu.com/1040g2sg3165o5ddpio705p00bo6l2dpm5d0h0s0?imageView2/2/w/1080/format/webp",
  4558. "https://ci.xiaohongshu.com/1040g2sg3165o5ddpio7g5p00bo6l2dpmu005p1o?imageView2/2/w/1080/format/webp",
  4559. "https://ci.xiaohongshu.com/1040g2sg3165o5ddpio805p00bo6l2dpmn29i7do?imageView2/2/w/1080/format/webp"
  4560. ],
  4561. "image_list": [
  4562. {
  4563. "image_url": "https://ci.xiaohongshu.com/1040g2sg3165o5ddpio705p00bo6l2dpm5d0h0s0?imageView2/2/w/1080/format/webp"
  4564. },
  4565. {
  4566. "image_url": "https://ci.xiaohongshu.com/1040g2sg3165o5ddpio7g5p00bo6l2dpmu005p1o?imageView2/2/w/1080/format/webp"
  4567. },
  4568. {
  4569. "image_url": "https://ci.xiaohongshu.com/1040g2sg3165o5ddpio805p00bo6l2dpmn29i7do?imageView2/2/w/1080/format/webp"
  4570. }
  4571. ],
  4572. "interact_info": {
  4573. "liked_count": 359,
  4574. "collected_count": 141,
  4575. "comment_count": 727,
  4576. "shared_count": 33
  4577. },
  4578. "extraction": null,
  4579. "is_knowledge": false,
  4580. "knowledge_reason": "",
  4581. "knowledge_score": null,
  4582. "knowledge_level": null,
  4583. "knowledge_evaluation": {
  4584. "quick_exclude": {
  4585. "result": "未通过",
  4586. "reason": "包含纯营销/广告内容,以及作品展示。"
  4587. },
  4588. "title_layer": {
  4589. "has_knowledge_direction": false,
  4590. "reason": "标题更侧重于展示制作表情包的成果和号召,而非明确指向知识内容。"
  4591. },
  4592. "image_layer": {
  4593. "knowledge_presentation": {
  4594. "match": false,
  4595. "reason": "图片主要展示表情包制作成果和收入截图,不含信息图表、知识性标注等。"
  4596. },
  4597. "educational_value": {
  4598. "has_value": false,
  4599. "reason": "图片未能教会他人具体方法、技能或原理,更多是成果展示。"
  4600. },
  4601. "structure_level": {
  4602. "structured": false,
  4603. "reason": "图片缺乏逻辑组织、步骤或要点的结构化呈现。"
  4604. },
  4605. "practicality": {
  4606. "practical": false,
  4607. "reason": "图片更多是观赏性内容,不提供可直接应用的方法或工具。"
  4608. },
  4609. "information_density": {
  4610. "level": "低",
  4611. "reason": "图片中没有明确的知识点,主要是表情包作品和收益截图。"
  4612. },
  4613. "overall": "无知识价值"
  4614. },
  4615. "text_layer": {
  4616. "information_gain": {
  4617. "has_gain": false,
  4618. "reason": "正文仅表达个人尝试成功的感受和招募意愿,未提供明确的新信息或方法。"
  4619. },
  4620. "verifiability": {
  4621. "verifiable": false,
  4622. "reason": "内容是纯主观感受和号召,缺乏基于事实、数据的可验证性信息。"
  4623. },
  4624. "knowledge_type": {
  4625. "type": "无法归类",
  4626. "reason": "正文内容无法归类为任何一种知识类型。"
  4627. },
  4628. "overall": "无知识价值"
  4629. },
  4630. "judgment_logic": "该帖子未能通过快速排除,因为它包含营销和作品展示。同时,图片层和正文层均未传递明确的知识价值,无法归类为任何知识类型。",
  4631. "core_evidence": [
  4632. "图片包含表情包作品展示和收入截图,具有营销和作品展示性质。",
  4633. "正文表达个人尝试成功感受和招募学习者的意愿,未提供具体知识内容。",
  4634. "图片和文字都没有提供可学习、可应用的方法、原理或经验。"
  4635. ],
  4636. "issues": [
  4637. "正文中提到“详细步”,暗示可能存在方法性知识,但实际内容和图片中均未体现,存在信息缺失。",
  4638. "内容更倾向于通过展示成果吸引潜在学习者,而非直接传递知识。"
  4639. ],
  4640. "conclusion": "该帖子被判定为非知识。它主要包含个人作品展示和具有营销性质的招募信息,未能提供经过验证的、具有可靠性和真实性的知识内容以便读者理解、学习、传播和应用。"
  4641. },
  4642. "post_relevance_score": null,
  4643. "relevance_level": "",
  4644. "relevance_reason": "",
  4645. "relevance_conclusion": "",
  4646. "relevance_evaluation": null,
  4647. "is_content_knowledge": null,
  4648. "purpose_score": null,
  4649. "category_score": null,
  4650. "final_score": null,
  4651. "match_level": "",
  4652. "evaluator_version": "v3.0",
  4653. "content_knowledge_evaluation": null,
  4654. "purpose_evaluation": null,
  4655. "category_evaluation": null
  4656. },
  4657. "post_659e9d970000000012009274_1_9": {
  4658. "type": "post",
  4659. "query": "[R] 过年就靠这组表情包了‼️哈哈哈哈哈…….",
  4660. "level": 13,
  4661. "relevance_score": 0,
  4662. "strategy": "帖子",
  4663. "iteration": 1,
  4664. "is_selected": true,
  4665. "note_id": "659e9d970000000012009274",
  4666. "note_url": "https://www.xiaohongshu.com/explore/659e9d970000000012009274",
  4667. "body_text": "🥕制图教程 1⃣️点击图片美化,导入背景素材 2⃣️点击贴纸-导入图片,导入宝宝图片 3⃣️扣出宝宝头像,调整位置大小",
  4668. "images": [
  4669. "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm005nh09630856mhs1mi00?imageView2/2/w/1080/format/webp",
  4670. "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm0g5nh09630856mt1a8j8o?imageView2/2/w/1080/format/webp",
  4671. "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm105nh09630856mre0bnq0?imageView2/2/w/1080/format/webp",
  4672. "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm1g5nh09630856mn44jlf8?imageView2/2/w/1080/format/webp",
  4673. "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm205nh09630856m396qkpg?imageView2/2/w/1080/format/webp",
  4674. "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm2g5nh09630856mime77l0?imageView2/2/w/1080/format/webp",
  4675. "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm305nh09630856m3mld4mg?imageView2/2/w/1080/format/webp",
  4676. "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm3g5nh09630856mp2nokpo?imageView2/2/w/1080/format/webp",
  4677. "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm405nh09630856m49umbgo?imageView2/2/w/1080/format/webp",
  4678. "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm4g5nh09630856mt216c7o?imageView2/2/w/1080/format/webp"
  4679. ],
  4680. "image_list": [
  4681. {
  4682. "image_url": "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm005nh09630856mhs1mi00?imageView2/2/w/1080/format/webp"
  4683. },
  4684. {
  4685. "image_url": "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm0g5nh09630856mt1a8j8o?imageView2/2/w/1080/format/webp"
  4686. },
  4687. {
  4688. "image_url": "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm105nh09630856mre0bnq0?imageView2/2/w/1080/format/webp"
  4689. },
  4690. {
  4691. "image_url": "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm1g5nh09630856mn44jlf8?imageView2/2/w/1080/format/webp"
  4692. },
  4693. {
  4694. "image_url": "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm205nh09630856m396qkpg?imageView2/2/w/1080/format/webp"
  4695. },
  4696. {
  4697. "image_url": "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm2g5nh09630856mime77l0?imageView2/2/w/1080/format/webp"
  4698. },
  4699. {
  4700. "image_url": "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm305nh09630856m3mld4mg?imageView2/2/w/1080/format/webp"
  4701. },
  4702. {
  4703. "image_url": "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm3g5nh09630856mp2nokpo?imageView2/2/w/1080/format/webp"
  4704. },
  4705. {
  4706. "image_url": "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm405nh09630856m49umbgo?imageView2/2/w/1080/format/webp"
  4707. },
  4708. {
  4709. "image_url": "https://ci.xiaohongshu.com/1040g2sg30toivd4tkm4g5nh09630856mt216c7o?imageView2/2/w/1080/format/webp"
  4710. }
  4711. ],
  4712. "interact_info": {
  4713. "liked_count": 1378,
  4714. "collected_count": 1030,
  4715. "comment_count": 5441,
  4716. "shared_count": 308
  4717. },
  4718. "extraction": null,
  4719. "is_knowledge": true,
  4720. "knowledge_reason": "",
  4721. "knowledge_score": 83,
  4722. "knowledge_level": null,
  4723. "knowledge_evaluation": {
  4724. "quick_exclude": {
  4725. "result": "通过",
  4726. "reason": "内容不属于纯情感表达、作品展示、娱乐搞笑、虚假信息或重复常识,其正文提供了明确的操作方法。"
  4727. },
  4728. "title_layer": {
  4729. "has_knowledge_direction": false,
  4730. "reason": "标题更侧重于情感表达和吸引眼球,未直接指向知识主题。"
  4731. },
  4732. "image_layer": {
  4733. "knowledge_presentation": {
  4734. "match": false,
  4735. "reason": "图片为表情包展示,不包含信息图表、知识性标注或知识体系,主要为示例用途而不是知识呈现。"
  4736. },
  4737. "educational_value": {
  4738. "has_value": false,
  4739. "reason": "图片本身无教学意义,仅为表情包成品展示,不能教会他人方法、技能或原理。"
  4740. },
  4741. "structure_level": {
  4742. "structured": false,
  4743. "reason": "图片是多个独立的表情包展示,无清晰逻辑组织或步骤要点。"
  4744. },
  4745. "practicality": {
  4746. "practical": false,
  4747. "reason": "图片本身无实际应用价值,只是观赏性内容,不提供可直接应用的方法或工具。"
  4748. },
  4749. "information_density": {
  4750. "level": "低",
  4751. "reason": "图片展示的是一系列表情包,没有明确的知识点。"
  4752. },
  4753. "overall": "无知识价值"
  4754. },
  4755. "text_layer": {
  4756. "information_gain": {
  4757. "has_gain": true,
  4758. "reason": "正文清晰提供了表情包制作的步骤和方法,属于新信息。"
  4759. },
  4760. "verifiability": {
  4761. "verifiable": true,
  4762. "reason": "正文描述的是具体的图片处理操作步骤,可根据描述进行实践验证。"
  4763. },
  4764. "knowledge_type": {
  4765. "type": "方法性知识",
  4766. "reason": "正文提供了制作表情包的具体步骤和操作方法。"
  4767. },
  4768. "overall": "有知识支撑"
  4769. },
  4770. "judgment_logic": "该帖子通过了快速排除,图片层虽然不直接传递知识,但正文层明确提供了可验证、有信息增量的制作方法,属于方法性知识。尽管标题未明确指向知识,但正文的教学性质足够使其被判定为知识。",
  4771. "core_evidence": [
  4772. "正文清晰列举了制作表情包的3个步骤:导入背景、导入图片、扣出头像并调整位大小,这属于详细的操作方法。",
  4773. "这些步骤是可实践和学习的,能够教会用户如何制作类似的表情包。"
  4774. ],
  4775. "issues": [
  4776. "标题未能有效体现内容的知识属性,可能降低知识内容的发现率。",
  4777. "图片仅为最终效果展示,未能辅助或增强知识的传递,知识的承载主要依靠文字描述。"
  4778. ],
  4779. "conclusion": "该帖子被判定为知识。尽管标题和图片主要用于展示和娱乐,但正文提供了清晰、可操作的表情包制作方法,属于有用的方法性知识,对读者具有实际的应用和学习价值。"
  4780. },
  4781. "post_relevance_score": null,
  4782. "relevance_level": "",
  4783. "relevance_reason": "",
  4784. "relevance_conclusion": "",
  4785. "relevance_evaluation": null,
  4786. "is_content_knowledge": true,
  4787. "purpose_score": 95,
  4788. "category_score": 20,
  4789. "final_score": 72.5,
  4790. "match_level": "基本匹配",
  4791. "evaluator_version": "v3.0",
  4792. "content_knowledge_evaluation": {
  4793. "is_content_knowledge": true,
  4794. "final_score": 83,
  4795. "level": "⭐⭐⭐⭐ 良好内容知识",
  4796. "quick_exclude": {
  4797. "result": "否",
  4798. "reason": "正文明确提供了制图教程的步骤"
  4799. },
  4800. "dimension_scores": {
  4801. "image_layer": {
  4802. "creation_method": {
  4803. "score": 15,
  4804. "reason": "图片配合正文展示了制图流程的三个核心步骤,提供了具体的导入、贴纸、抠图的操作指引"
  4805. },
  4806. "knowledge_system": {
  4807. "score": 15,
  4808. "reason": "多图形成完整的制作步骤(导入背景-导入人物-抠图调整),逻辑清晰"
  4809. },
  4810. "teaching_annotation": {
  4811. "score": 8,
  4812. "reason": "图片展示了制作结果,但实际操作步骤的图片缺少标注,不如最终结果图片教学性强"
  4813. },
  4814. "method_reusability": {
  4815. "score": 10,
  4816. "reason": "抠图、导入贴纸、调整位置大小是通用的图片编辑方法,可应用于多种照片制作场景"
  4817. },
  4818. "principle_case": {
  4819. "score": 8,
  4820. "reason": "通过制作表情包的案例,展示了图片编辑工具的基本操作方法"
  4821. },
  4822. "subtotal": 56
  4823. },
  4824. "text_layer": {
  4825. "method_description": {
  4826. "score": 10,
  4827. "reason": "正文提供了完整的3步教程描述,指导用户如何制作表情包"
  4828. },
  4829. "knowledge_summary": {
  4830. "score": 7,
  4831. "reason": "正文以简明扼要的步骤形式总结了图片编辑的常用方法,具有一定的指导性"
  4832. },
  4833. "subtotal": 17
  4834. },
  4835. "title_layer": {
  4836. "content_direction": {
  4837. "score": 10,
  4838. "reason": "标题虽然带有展示性,但结合正文和图片,其核心是分享制作表情包的技巧,属于创作相关"
  4839. },
  4840. "subtotal": 10
  4841. }
  4842. },
  4843. "core_evidence": [
  4844. "正文明确写出了“制图教程”的字样,并列出3个操作步骤",
  4845. "图片展示了不同表情包的制作成果,并且包含制作表情包所需的背景和贴纸等元素",
  4846. "教程中提到的“点击图片美化,导入背景素材”、“点击贴纸-导入图片,导入宝宝图片”、“扣出宝宝头像,调整位置大小”是具体可操作的制作方法"
  4847. ],
  4848. "issues": [
  4849. "图片中关于操作步骤的展示不够直观,缺少对工具界面和具体操作过程的截图或教学标注,主要展示的是最终成果",
  4850. "知识体系化程度主要体现在单次操作的完整性上,而非更广泛的创作原理或框架"
  4851. ],
  4852. "summary": "该帖子提供了制作表情包的详细教程和步骤,属于具体的制作方法范畴。正文列出了清晰的3步操作,图片展示了制作成果和部分素材,具备较强的可操作性和方法可复用性。尽管图片在展示操作过程的教学性标注上有所欠缺,但整体内容仍属于良好的内容知识。"
  4853. },
  4854. "purpose_evaluation": {
  4855. "purpose_score": 95,
  4856. "core_motivation": "用户想学习制作猫咪表情包梗图的方法",
  4857. "image_value": "图片展示了一组制作好的婴儿表情包,其风格和制作逻辑(将人脸抠图放到插画身体上)与猫咪表情包梗图的制作思路高度相似,用户看到这些图片能直接联想到猫咪表情包的制作效果和可能性。",
  4858. "title_intention": "标题通过“表情包”和“哈哈哈哈哈”暗示了内容的趣味性和可制作性,直接提到了表情包,与用户需求品类一致。",
  4859. "text_content": "正文明确给出了“制图教程”的步骤,包括“点击图片美化,导入背景素材”、“点击贴纸-导入图片,导入宝宝图片”、“扣出宝宝头像,调整位置大小”,这些步骤正是制作表情包梗图的核心方法,具有高度的实用性和可操作性。",
  4860. "match_level": "高度匹配",
  4861. "core_basis": "图片直观展示的表情包效果与需求品类强相关,正文提供了详细的制作教程,直接满足了用户“制作”和“梗图”的核心动机。"
  4862. },
  4863. "category_evaluation": {
  4864. "category_score": 20,
  4865. "original_category": {
  4866. "核心主体": "猫咪表情包梗图",
  4867. "关键限定词": [
  4868. "猫咪",
  4869. "表情包",
  4870. "梗图",
  4871. "制作"
  4872. ]
  4873. },
  4874. "actual_category": {
  4875. "图片主体": "婴儿表情包",
  4876. "图片限定特征": [
  4877. "婴儿",
  4878. "表情包",
  4879. "卡通"
  4880. ],
  4881. "标题品类": "表情包",
  4882. "正文品类": "制图教程"
  4883. },
  4884. "match_level": "主体过度泛化",
  4885. "subject_match": "核心主体不完全一致,需求为“猫咪表情包”,帖子为“婴儿表情包”",
  4886. "qualifier_match": "限定词“表情包”匹配,但“猫咪”和“梗图”不匹配。帖子的“制图教程”与需求的“如何制作”在目的上一致,但品类内容有本质区别。",
  4887. "core_basis": "原始需求的核心主体是“猫咪表情包”,帖子图片展示的是“婴儿表情包”,主体品类不一致。虽然都涉及到“表情包”和“制作”,但具体的动物形象差异导致品类匹配度低。"
  4888. }
  4889. },
  4890. "step_next_round_r1": {
  4891. "type": "step",
  4892. "query": "步骤4: 构建下一轮 (12个查询)",
  4893. "level": 11,
  4894. "relevance_score": 0,
  4895. "strategy": "构建下一轮",
  4896. "iteration": 1,
  4897. "is_selected": true
  4898. },
  4899. "next_round_表情包梗图_r1_0": {
  4900. "type": "next_round_item",
  4901. "query": "[Q] 表情包梗图",
  4902. "level": 12,
  4903. "relevance_score": 0.23399999999999999,
  4904. "strategy": "域内组合",
  4905. "iteration": 1,
  4906. "is_selected": true,
  4907. "type_label": "[中心名词]",
  4908. "item_type": "combination",
  4909. "is_suggestion": false,
  4910. "suggestion_label": ""
  4911. },
  4912. "next_round_表情包怎么制作_r1_1": {
  4913. "type": "next_round_item",
  4914. "query": "[Q] 表情包怎么制作",
  4915. "level": 12,
  4916. "relevance_score": 0.8749999999999999,
  4917. "strategy": "高增益SUG",
  4918. "iteration": 1,
  4919. "is_selected": true,
  4920. "type_label": "",
  4921. "item_type": "sug",
  4922. "is_suggestion": true,
  4923. "suggestion_label": "[suggestion]"
  4924. },
  4925. "next_round_制作表情包_r1_2": {
  4926. "type": "next_round_item",
  4927. "query": "[Q] 制作表情包",
  4928. "level": 12,
  4929. "relevance_score": 0.83,
  4930. "strategy": "高增益SUG",
  4931. "iteration": 1,
  4932. "is_selected": true,
  4933. "type_label": "",
  4934. "item_type": "sug",
  4935. "is_suggestion": true,
  4936. "suggestion_label": "[suggestion]"
  4937. },
  4938. "next_round_梗图meme_r1_3": {
  4939. "type": "next_round_item",
  4940. "query": "[Q] 梗图meme",
  4941. "level": 12,
  4942. "relevance_score": 0.44000000000000006,
  4943. "strategy": "高增益SUG",
  4944. "iteration": 1,
  4945. "is_selected": true,
  4946. "type_label": "",
  4947. "item_type": "sug",
  4948. "is_suggestion": true,
  4949. "suggestion_label": "[suggestion]"
  4950. },
  4951. "next_round_表情包模板_r1_4": {
  4952. "type": "next_round_item",
  4953. "query": "[Q] 表情包模板",
  4954. "level": 12,
  4955. "relevance_score": 0.41000000000000003,
  4956. "strategy": "高增益SUG",
  4957. "iteration": 1,
  4958. "is_selected": true,
  4959. "type_label": "",
  4960. "item_type": "sug",
  4961. "is_suggestion": true,
  4962. "suggestion_label": "[suggestion]"
  4963. },
  4964. "next_round_梗图素材_r1_5": {
  4965. "type": "next_round_item",
  4966. "query": "[Q] 梗图素材",
  4967. "level": 12,
  4968. "relevance_score": 0.4,
  4969. "strategy": "高增益SUG",
  4970. "iteration": 1,
  4971. "is_selected": true,
  4972. "type_label": "",
  4973. "item_type": "sug",
  4974. "is_suggestion": true,
  4975. "suggestion_label": "[suggestion]"
  4976. },
  4977. "next_round_梗图描改_r1_6": {
  4978. "type": "next_round_item",
  4979. "query": "[Q] 梗图描改",
  4980. "level": 12,
  4981. "relevance_score": 0.36,
  4982. "strategy": "高增益SUG",
  4983. "iteration": 1,
  4984. "is_selected": true,
  4985. "type_label": "",
  4986. "item_type": "sug",
  4987. "is_suggestion": true,
  4988. "suggestion_label": "[suggestion]"
  4989. },
  4990. "next_round_表情包可爱_r1_7": {
  4991. "type": "next_round_item",
  4992. "query": "[Q] 表情包可爱",
  4993. "level": 12,
  4994. "relevance_score": 0.19400000000000003,
  4995. "strategy": "高增益SUG",
  4996. "iteration": 1,
  4997. "is_selected": true,
  4998. "type_label": "",
  4999. "item_type": "sug",
  5000. "is_suggestion": true,
  5001. "suggestion_label": "[suggestion]"
  5002. },
  5003. "next_round_表情包抽象_r1_8": {
  5004. "type": "next_round_item",
  5005. "query": "[Q] 表情包抽象",
  5006. "level": 12,
  5007. "relevance_score": 0.17,
  5008. "strategy": "高增益SUG",
  5009. "iteration": 1,
  5010. "is_selected": true,
  5011. "type_label": "",
  5012. "item_type": "sug",
  5013. "is_suggestion": true,
  5014. "suggestion_label": "[suggestion]"
  5015. },
  5016. "next_round_表情包搞笑配文_r1_9": {
  5017. "type": "next_round_item",
  5018. "query": "[Q] 表情包搞笑配文",
  5019. "level": 12,
  5020. "relevance_score": 0.17,
  5021. "strategy": "高增益SUG",
  5022. "iteration": 1,
  5023. "is_selected": true,
  5024. "type_label": "",
  5025. "item_type": "sug",
  5026. "is_suggestion": true,
  5027. "suggestion_label": "[suggestion]"
  5028. },
  5029. "next_round_梗图搞笑_r1_10": {
  5030. "type": "next_round_item",
  5031. "query": "[Q] 梗图搞笑",
  5032. "level": 12,
  5033. "relevance_score": 0.17,
  5034. "strategy": "高增益SUG",
  5035. "iteration": 1,
  5036. "is_selected": true,
  5037. "type_label": "",
  5038. "item_type": "sug",
  5039. "is_suggestion": true,
  5040. "suggestion_label": "[suggestion]"
  5041. },
  5042. "next_round_表情包图片大全_r1_11": {
  5043. "type": "next_round_item",
  5044. "query": "[Q] 表情包图片大全",
  5045. "level": 12,
  5046. "relevance_score": 0.14500000000000002,
  5047. "strategy": "高增益SUG",
  5048. "iteration": 1,
  5049. "is_selected": true,
  5050. "type_label": "",
  5051. "item_type": "sug",
  5052. "is_suggestion": true,
  5053. "suggestion_label": "[suggestion]"
  5054. }
  5055. },
  5056. "edges": [
  5057. {
  5058. "from": "root_o",
  5059. "to": "round_0",
  5060. "edge_type": "root_to_round",
  5061. "strategy": "初始化"
  5062. },
  5063. {
  5064. "from": "round_0",
  5065. "to": "step_seg_r0",
  5066. "edge_type": "round_to_step",
  5067. "strategy": "分段"
  5068. },
  5069. {
  5070. "from": "step_seg_r0",
  5071. "to": "segment_0_r0",
  5072. "edge_type": "step_to_segment",
  5073. "strategy": "疑问引导"
  5074. },
  5075. {
  5076. "from": "segment_0_r0",
  5077. "to": "word_如何_seg0_0",
  5078. "edge_type": "segment_to_word",
  5079. "strategy": "Word"
  5080. },
  5081. {
  5082. "from": "step_seg_r0",
  5083. "to": "segment_1_r0",
  5084. "edge_type": "step_to_segment",
  5085. "strategy": "核心动作"
  5086. },
  5087. {
  5088. "from": "segment_1_r0",
  5089. "to": "word_制作_seg1_0",
  5090. "edge_type": "segment_to_word",
  5091. "strategy": "Word"
  5092. },
  5093. {
  5094. "from": "step_seg_r0",
  5095. "to": "segment_2_r0",
  5096. "edge_type": "step_to_segment",
  5097. "strategy": "修饰短语"
  5098. },
  5099. {
  5100. "from": "segment_2_r0",
  5101. "to": "word_猫咪_seg2_0",
  5102. "edge_type": "segment_to_word",
  5103. "strategy": "Word"
  5104. },
  5105. {
  5106. "from": "step_seg_r0",
  5107. "to": "segment_3_r0",
  5108. "edge_type": "step_to_segment",
  5109. "strategy": "中心名词"
  5110. },
  5111. {
  5112. "from": "segment_3_r0",
  5113. "to": "word_表情包_seg3_0",
  5114. "edge_type": "segment_to_word",
  5115. "strategy": "Word"
  5116. },
  5117. {
  5118. "from": "segment_3_r0",
  5119. "to": "word_梗图_seg3_1",
  5120. "edge_type": "segment_to_word",
  5121. "strategy": "Word"
  5122. },
  5123. {
  5124. "from": "root_o",
  5125. "to": "round_1",
  5126. "edge_type": "root_to_round",
  5127. "strategy": "第1轮"
  5128. },
  5129. {
  5130. "from": "round_1",
  5131. "to": "step_sug_r1",
  5132. "edge_type": "round_to_step",
  5133. "strategy": "推荐词"
  5134. },
  5135. {
  5136. "from": "step_sug_r1",
  5137. "to": "q_如何_r1_0",
  5138. "edge_type": "step_to_q",
  5139. "strategy": "Query"
  5140. },
  5141. {
  5142. "from": "q_如何_r1_0",
  5143. "to": "sug_如何用兔子警官的口气讲话_r1_q0_0",
  5144. "edge_type": "q_to_sug",
  5145. "strategy": "推荐词"
  5146. },
  5147. {
  5148. "from": "q_如何_r1_0",
  5149. "to": "sug_如何快速减肥_r1_q0_1",
  5150. "edge_type": "q_to_sug",
  5151. "strategy": "推荐词"
  5152. },
  5153. {
  5154. "from": "q_如何_r1_0",
  5155. "to": "sug_如何培养男人主动给你花钱_r1_q0_2",
  5156. "edge_type": "q_to_sug",
  5157. "strategy": "推荐词"
  5158. },
  5159. {
  5160. "from": "q_如何_r1_0",
  5161. "to": "sug_如何快速挣到钱_r1_q0_3",
  5162. "edge_type": "q_to_sug",
  5163. "strategy": "推荐词"
  5164. },
  5165. {
  5166. "from": "q_如何_r1_0",
  5167. "to": "sug_如何和女生聊天找话题_r1_q0_4",
  5168. "edge_type": "q_to_sug",
  5169. "strategy": "推荐词"
  5170. },
  5171. {
  5172. "from": "q_如何_r1_0",
  5173. "to": "sug_如何连接别人家的加密wifi_r1_q0_5",
  5174. "edge_type": "q_to_sug",
  5175. "strategy": "推荐词"
  5176. },
  5177. {
  5178. "from": "q_如何_r1_0",
  5179. "to": "sug_如何逼自己自律学习_r1_q0_6",
  5180. "edge_type": "q_to_sug",
  5181. "strategy": "推荐词"
  5182. },
  5183. {
  5184. "from": "q_如何_r1_0",
  5185. "to": "sug_如何让男生持续上头_r1_q0_7",
  5186. "edge_type": "q_to_sug",
  5187. "strategy": "推荐词"
  5188. },
  5189. {
  5190. "from": "q_如何_r1_0",
  5191. "to": "sug_如何治疗早泻时间短_r1_q0_8",
  5192. "edge_type": "q_to_sug",
  5193. "strategy": "推荐词"
  5194. },
  5195. {
  5196. "from": "q_如何_r1_0",
  5197. "to": "sug_如何快速入睡_r1_q0_9",
  5198. "edge_type": "q_to_sug",
  5199. "strategy": "推荐词"
  5200. },
  5201. {
  5202. "from": "step_sug_r1",
  5203. "to": "q_制作_r1_1",
  5204. "edge_type": "step_to_q",
  5205. "strategy": "Query"
  5206. },
  5207. {
  5208. "from": "q_制作_r1_1",
  5209. "to": "sug_制作ppt_r1_q1_0",
  5210. "edge_type": "q_to_sug",
  5211. "strategy": "推荐词"
  5212. },
  5213. {
  5214. "from": "q_制作_r1_1",
  5215. "to": "sug_制作表情包_r1_q1_1",
  5216. "edge_type": "q_to_sug",
  5217. "strategy": "推荐词"
  5218. },
  5219. {
  5220. "from": "q_制作_r1_1",
  5221. "to": "sug_制作简历_r1_q1_2",
  5222. "edge_type": "q_to_sug",
  5223. "strategy": "推荐词"
  5224. },
  5225. {
  5226. "from": "q_制作_r1_1",
  5227. "to": "sug_制作ppt的ai软件_r1_q1_3",
  5228. "edge_type": "q_to_sug",
  5229. "strategy": "推荐词"
  5230. },
  5231. {
  5232. "from": "q_制作_r1_1",
  5233. "to": "sug_制作冰糖葫芦_r1_q1_4",
  5234. "edge_type": "q_to_sug",
  5235. "strategy": "推荐词"
  5236. },
  5237. {
  5238. "from": "q_制作_r1_1",
  5239. "to": "sug_制作视频_r1_q1_5",
  5240. "edge_type": "q_to_sug",
  5241. "strategy": "推荐词"
  5242. },
  5243. {
  5244. "from": "q_制作_r1_1",
  5245. "to": "sug_制作简易调光台灯_r1_q1_6",
  5246. "edge_type": "q_to_sug",
  5247. "strategy": "推荐词"
  5248. },
  5249. {
  5250. "from": "q_制作_r1_1",
  5251. "to": "sug_制作动物书_r1_q1_7",
  5252. "edge_type": "q_to_sug",
  5253. "strategy": "推荐词"
  5254. },
  5255. {
  5256. "from": "q_制作_r1_1",
  5257. "to": "sug_制作香水_r1_q1_8",
  5258. "edge_type": "q_to_sug",
  5259. "strategy": "推荐词"
  5260. },
  5261. {
  5262. "from": "q_制作_r1_1",
  5263. "to": "sug_制作美食_r1_q1_9",
  5264. "edge_type": "q_to_sug",
  5265. "strategy": "推荐词"
  5266. },
  5267. {
  5268. "from": "step_sug_r1",
  5269. "to": "q_猫咪_r1_2",
  5270. "edge_type": "step_to_q",
  5271. "strategy": "Query"
  5272. },
  5273. {
  5274. "from": "q_猫咪_r1_2",
  5275. "to": "sug_猫咪领养免费领养_r1_q2_0",
  5276. "edge_type": "q_to_sug",
  5277. "strategy": "推荐词"
  5278. },
  5279. {
  5280. "from": "q_猫咪_r1_2",
  5281. "to": "sug_猫咪叫声吸引小猫_r1_q2_1",
  5282. "edge_type": "q_to_sug",
  5283. "strategy": "推荐词"
  5284. },
  5285. {
  5286. "from": "q_猫咪_r1_2",
  5287. "to": "sug_猫咪头像_r1_q2_2",
  5288. "edge_type": "q_to_sug",
  5289. "strategy": "推荐词"
  5290. },
  5291. {
  5292. "from": "q_猫咪_r1_2",
  5293. "to": "sug_猫咪呕吐_r1_q2_3",
  5294. "edge_type": "q_to_sug",
  5295. "strategy": "推荐词"
  5296. },
  5297. {
  5298. "from": "q_猫咪_r1_2",
  5299. "to": "sug_猫咪零食_r1_q2_4",
  5300. "edge_type": "q_to_sug",
  5301. "strategy": "推荐词"
  5302. },
  5303. {
  5304. "from": "q_猫咪_r1_2",
  5305. "to": "sug_猫咪驱虫药推荐_r1_q2_5",
  5306. "edge_type": "q_to_sug",
  5307. "strategy": "推荐词"
  5308. },
  5309. {
  5310. "from": "q_猫咪_r1_2",
  5311. "to": "sug_猫咪尿闭怎么在家治疗_r1_q2_6",
  5312. "edge_type": "q_to_sug",
  5313. "strategy": "推荐词"
  5314. },
  5315. {
  5316. "from": "q_猫咪_r1_2",
  5317. "to": "sug_猫咪品种_r1_q2_7",
  5318. "edge_type": "q_to_sug",
  5319. "strategy": "推荐词"
  5320. },
  5321. {
  5322. "from": "q_猫咪_r1_2",
  5323. "to": "sug_猫咪玩具_r1_q2_8",
  5324. "edge_type": "q_to_sug",
  5325. "strategy": "推荐词"
  5326. },
  5327. {
  5328. "from": "q_猫咪_r1_2",
  5329. "to": "sug_猫咪感冒打喷嚏吃什么药_r1_q2_9",
  5330. "edge_type": "q_to_sug",
  5331. "strategy": "推荐词"
  5332. },
  5333. {
  5334. "from": "step_sug_r1",
  5335. "to": "q_表情包_r1_3",
  5336. "edge_type": "step_to_q",
  5337. "strategy": "Query"
  5338. },
  5339. {
  5340. "from": "q_表情包_r1_3",
  5341. "to": "sug_表情包抽象_r1_q3_0",
  5342. "edge_type": "q_to_sug",
  5343. "strategy": "推荐词"
  5344. },
  5345. {
  5346. "from": "q_表情包_r1_3",
  5347. "to": "sug_表情包怎么制作_r1_q3_1",
  5348. "edge_type": "q_to_sug",
  5349. "strategy": "推荐词"
  5350. },
  5351. {
  5352. "from": "q_表情包_r1_3",
  5353. "to": "sug_表情包可爱_r1_q3_2",
  5354. "edge_type": "q_to_sug",
  5355. "strategy": "推荐词"
  5356. },
  5357. {
  5358. "from": "q_表情包_r1_3",
  5359. "to": "sug_表情包图片大全_r1_q3_3",
  5360. "edge_type": "q_to_sug",
  5361. "strategy": "推荐词"
  5362. },
  5363. {
  5364. "from": "q_表情包_r1_3",
  5365. "to": "sug_表情包搞笑配文_r1_q3_4",
  5366. "edge_type": "q_to_sug",
  5367. "strategy": "推荐词"
  5368. },
  5369. {
  5370. "from": "q_表情包_r1_3",
  5371. "to": "sug_表情包模板_r1_q3_5",
  5372. "edge_type": "q_to_sug",
  5373. "strategy": "推荐词"
  5374. },
  5375. {
  5376. "from": "q_表情包_r1_3",
  5377. "to": "sug_表情包发给女朋友_r1_q3_6",
  5378. "edge_type": "q_to_sug",
  5379. "strategy": "推荐词"
  5380. },
  5381. {
  5382. "from": "q_表情包_r1_3",
  5383. "to": "sug_表情包制作赚钱_r1_q3_7",
  5384. "edge_type": "q_to_sug",
  5385. "strategy": "推荐词"
  5386. },
  5387. {
  5388. "from": "q_表情包_r1_3",
  5389. "to": "sug_表情包平静发疯_r1_q3_8",
  5390. "edge_type": "q_to_sug",
  5391. "strategy": "推荐词"
  5392. },
  5393. {
  5394. "from": "q_表情包_r1_3",
  5395. "to": "sug_表情包评论区自取_r1_q3_9",
  5396. "edge_type": "q_to_sug",
  5397. "strategy": "推荐词"
  5398. },
  5399. {
  5400. "from": "step_sug_r1",
  5401. "to": "q_梗图_r1_4",
  5402. "edge_type": "step_to_q",
  5403. "strategy": "Query"
  5404. },
  5405. {
  5406. "from": "q_梗图_r1_4",
  5407. "to": "sug_梗图素材_r1_q4_0",
  5408. "edge_type": "q_to_sug",
  5409. "strategy": "推荐词"
  5410. },
  5411. {
  5412. "from": "q_梗图_r1_4",
  5413. "to": "sug_梗图搞笑_r1_q4_1",
  5414. "edge_type": "q_to_sug",
  5415. "strategy": "推荐词"
  5416. },
  5417. {
  5418. "from": "q_梗图_r1_4",
  5419. "to": "sug_梗图精神状态_r1_q4_2",
  5420. "edge_type": "q_to_sug",
  5421. "strategy": "推荐词"
  5422. },
  5423. {
  5424. "from": "q_梗图_r1_4",
  5425. "to": "sug_谐音梗猜图_r1_q4_3",
  5426. "edge_type": "q_to_sug",
  5427. "strategy": "推荐词"
  5428. },
  5429. {
  5430. "from": "q_梗图_r1_4",
  5431. "to": "sug_梗图meme_r1_q4_4",
  5432. "edge_type": "q_to_sug",
  5433. "strategy": "推荐词"
  5434. },
  5435. {
  5436. "from": "q_梗图_r1_4",
  5437. "to": "sug_梗图双人_r1_q4_5",
  5438. "edge_type": "q_to_sug",
  5439. "strategy": "推荐词"
  5440. },
  5441. {
  5442. "from": "q_梗图_r1_4",
  5443. "to": "sug_梗图抽象_r1_q4_6",
  5444. "edge_type": "q_to_sug",
  5445. "strategy": "推荐词"
  5446. },
  5447. {
  5448. "from": "q_梗图_r1_4",
  5449. "to": "sug_梗图描改_r1_q4_7",
  5450. "edge_type": "q_to_sug",
  5451. "strategy": "推荐词"
  5452. },
  5453. {
  5454. "from": "q_梗图_r1_4",
  5455. "to": "sug_梗图分享_r1_q4_8",
  5456. "edge_type": "q_to_sug",
  5457. "strategy": "推荐词"
  5458. },
  5459. {
  5460. "from": "q_梗图_r1_4",
  5461. "to": "sug_梗图模版_r1_q4_9",
  5462. "edge_type": "q_to_sug",
  5463. "strategy": "推荐词"
  5464. },
  5465. {
  5466. "from": "round_1",
  5467. "to": "step_comb_r1",
  5468. "edge_type": "round_to_step",
  5469. "strategy": "域内组词"
  5470. },
  5471. {
  5472. "from": "step_comb_r1",
  5473. "to": "comb_表情包梗图_r1_0",
  5474. "edge_type": "step_to_comb",
  5475. "strategy": "域内组合"
  5476. },
  5477. {
  5478. "from": "round_1",
  5479. "to": "step_search_r1",
  5480. "edge_type": "round_to_step",
  5481. "strategy": "搜索"
  5482. },
  5483. {
  5484. "from": "step_search_r1",
  5485. "to": "search_制作表情包_r1_0",
  5486. "edge_type": "step_to_search_word",
  5487. "strategy": "搜索词"
  5488. },
  5489. {
  5490. "from": "search_制作表情包_r1_0",
  5491. "to": "post_66f9046a000000002a033202_0_0",
  5492. "edge_type": "search_word_to_post",
  5493. "strategy": "搜索结果"
  5494. },
  5495. {
  5496. "from": "search_制作表情包_r1_0",
  5497. "to": "post_668e06cd00000000250145fe_0_1",
  5498. "edge_type": "search_word_to_post",
  5499. "strategy": "搜索结果"
  5500. },
  5501. {
  5502. "from": "search_制作表情包_r1_0",
  5503. "to": "post_671d9a72000000001402e50f_0_2",
  5504. "edge_type": "search_word_to_post",
  5505. "strategy": "搜索结果"
  5506. },
  5507. {
  5508. "from": "search_制作表情包_r1_0",
  5509. "to": "post_666978a7000000001c023418_0_3",
  5510. "edge_type": "search_word_to_post",
  5511. "strategy": "搜索结果"
  5512. },
  5513. {
  5514. "from": "search_制作表情包_r1_0",
  5515. "to": "post_68543e700000000017036013_0_4",
  5516. "edge_type": "search_word_to_post",
  5517. "strategy": "搜索结果"
  5518. },
  5519. {
  5520. "from": "search_制作表情包_r1_0",
  5521. "to": "post_674962d800000000020393bc_0_5",
  5522. "edge_type": "search_word_to_post",
  5523. "strategy": "搜索结果"
  5524. },
  5525. {
  5526. "from": "search_制作表情包_r1_0",
  5527. "to": "post_66d1312d000000001d014731_0_6",
  5528. "edge_type": "search_word_to_post",
  5529. "strategy": "搜索结果"
  5530. },
  5531. {
  5532. "from": "search_制作表情包_r1_0",
  5533. "to": "post_68919d0e00000000220216b4_0_7",
  5534. "edge_type": "search_word_to_post",
  5535. "strategy": "搜索结果"
  5536. },
  5537. {
  5538. "from": "search_制作表情包_r1_0",
  5539. "to": "post_679086f0000000001703826a_0_8",
  5540. "edge_type": "search_word_to_post",
  5541. "strategy": "搜索结果"
  5542. },
  5543. {
  5544. "from": "search_制作表情包_r1_0",
  5545. "to": "post_65e3cd98000000000b0186bb_0_9",
  5546. "edge_type": "search_word_to_post",
  5547. "strategy": "搜索结果"
  5548. },
  5549. {
  5550. "from": "step_search_r1",
  5551. "to": "search_表情包怎么制作_r1_1",
  5552. "edge_type": "step_to_search_word",
  5553. "strategy": "搜索词"
  5554. },
  5555. {
  5556. "from": "search_表情包怎么制作_r1_1",
  5557. "to": "post_66ea4e30000000001e01964b_1_0",
  5558. "edge_type": "search_word_to_post",
  5559. "strategy": "搜索结果"
  5560. },
  5561. {
  5562. "from": "search_表情包怎么制作_r1_1",
  5563. "to": "post_668e06cd00000000250145fe_1_1",
  5564. "edge_type": "search_word_to_post",
  5565. "strategy": "搜索结果"
  5566. },
  5567. {
  5568. "from": "search_表情包怎么制作_r1_1",
  5569. "to": "post_68282bbd000000002001f349_1_2",
  5570. "edge_type": "search_word_to_post",
  5571. "strategy": "搜索结果"
  5572. },
  5573. {
  5574. "from": "search_表情包怎么制作_r1_1",
  5575. "to": "post_68bc2916000000001d00aa35_1_3",
  5576. "edge_type": "search_word_to_post",
  5577. "strategy": "搜索结果"
  5578. },
  5579. {
  5580. "from": "search_表情包怎么制作_r1_1",
  5581. "to": "post_6876f73f0000000011002f0c_1_4",
  5582. "edge_type": "search_word_to_post",
  5583. "strategy": "搜索结果"
  5584. },
  5585. {
  5586. "from": "search_表情包怎么制作_r1_1",
  5587. "to": "post_68919d0e00000000220216b4_1_5",
  5588. "edge_type": "search_word_to_post",
  5589. "strategy": "搜索结果"
  5590. },
  5591. {
  5592. "from": "search_表情包怎么制作_r1_1",
  5593. "to": "post_666978a7000000001c023418_1_6",
  5594. "edge_type": "search_word_to_post",
  5595. "strategy": "搜索结果"
  5596. },
  5597. {
  5598. "from": "search_表情包怎么制作_r1_1",
  5599. "to": "post_66d1312d000000001d014731_1_7",
  5600. "edge_type": "search_word_to_post",
  5601. "strategy": "搜索结果"
  5602. },
  5603. {
  5604. "from": "search_表情包怎么制作_r1_1",
  5605. "to": "post_66b23cd4000000000503384f_1_8",
  5606. "edge_type": "search_word_to_post",
  5607. "strategy": "搜索结果"
  5608. },
  5609. {
  5610. "from": "search_表情包怎么制作_r1_1",
  5611. "to": "post_659e9d970000000012009274_1_9",
  5612. "edge_type": "search_word_to_post",
  5613. "strategy": "搜索结果"
  5614. },
  5615. {
  5616. "from": "round_1",
  5617. "to": "step_next_round_r1",
  5618. "edge_type": "round_to_step",
  5619. "strategy": "构建下一轮"
  5620. },
  5621. {
  5622. "from": "step_next_round_r1",
  5623. "to": "next_round_表情包梗图_r1_0",
  5624. "edge_type": "step_to_next_round",
  5625. "strategy": "域内组合"
  5626. },
  5627. {
  5628. "from": "step_next_round_r1",
  5629. "to": "next_round_表情包怎么制作_r1_1",
  5630. "edge_type": "step_to_next_round",
  5631. "strategy": "SUG"
  5632. },
  5633. {
  5634. "from": "step_next_round_r1",
  5635. "to": "next_round_制作表情包_r1_2",
  5636. "edge_type": "step_to_next_round",
  5637. "strategy": "SUG"
  5638. },
  5639. {
  5640. "from": "step_next_round_r1",
  5641. "to": "next_round_梗图meme_r1_3",
  5642. "edge_type": "step_to_next_round",
  5643. "strategy": "SUG"
  5644. },
  5645. {
  5646. "from": "step_next_round_r1",
  5647. "to": "next_round_表情包模板_r1_4",
  5648. "edge_type": "step_to_next_round",
  5649. "strategy": "SUG"
  5650. },
  5651. {
  5652. "from": "step_next_round_r1",
  5653. "to": "next_round_梗图素材_r1_5",
  5654. "edge_type": "step_to_next_round",
  5655. "strategy": "SUG"
  5656. },
  5657. {
  5658. "from": "step_next_round_r1",
  5659. "to": "next_round_梗图描改_r1_6",
  5660. "edge_type": "step_to_next_round",
  5661. "strategy": "SUG"
  5662. },
  5663. {
  5664. "from": "step_next_round_r1",
  5665. "to": "next_round_表情包可爱_r1_7",
  5666. "edge_type": "step_to_next_round",
  5667. "strategy": "SUG"
  5668. },
  5669. {
  5670. "from": "step_next_round_r1",
  5671. "to": "next_round_表情包抽象_r1_8",
  5672. "edge_type": "step_to_next_round",
  5673. "strategy": "SUG"
  5674. },
  5675. {
  5676. "from": "step_next_round_r1",
  5677. "to": "next_round_表情包搞笑配文_r1_9",
  5678. "edge_type": "step_to_next_round",
  5679. "strategy": "SUG"
  5680. },
  5681. {
  5682. "from": "step_next_round_r1",
  5683. "to": "next_round_梗图搞笑_r1_10",
  5684. "edge_type": "step_to_next_round",
  5685. "strategy": "SUG"
  5686. },
  5687. {
  5688. "from": "step_next_round_r1",
  5689. "to": "next_round_表情包图片大全_r1_11",
  5690. "edge_type": "step_to_next_round",
  5691. "strategy": "SUG"
  5692. }
  5693. ],
  5694. "iterations": {
  5695. "0": [
  5696. "root_o",
  5697. "round_0"
  5698. ],
  5699. "1": [
  5700. "step_seg_r0"
  5701. ],
  5702. "2": [
  5703. "segment_0_r0",
  5704. "segment_1_r0",
  5705. "segment_2_r0",
  5706. "segment_3_r0"
  5707. ],
  5708. "3": [
  5709. "word_如何_seg0_0",
  5710. "word_制作_seg1_0",
  5711. "word_猫咪_seg2_0",
  5712. "word_表情包_seg3_0",
  5713. "word_梗图_seg3_1"
  5714. ],
  5715. "10": [
  5716. "round_1",
  5717. "step_sug_r1",
  5718. "step_comb_r1",
  5719. "step_search_r1",
  5720. "step_next_round_r1"
  5721. ],
  5722. "12": [
  5723. "q_如何_r1_0",
  5724. "q_制作_r1_1",
  5725. "q_猫咪_r1_2",
  5726. "q_表情包_r1_3",
  5727. "q_梗图_r1_4",
  5728. "comb_表情包梗图_r1_0",
  5729. "search_制作表情包_r1_0",
  5730. "search_表情包怎么制作_r1_1",
  5731. "next_round_表情包梗图_r1_0",
  5732. "next_round_表情包怎么制作_r1_1",
  5733. "next_round_制作表情包_r1_2",
  5734. "next_round_梗图meme_r1_3",
  5735. "next_round_表情包模板_r1_4",
  5736. "next_round_梗图素材_r1_5",
  5737. "next_round_梗图描改_r1_6",
  5738. "next_round_表情包可爱_r1_7",
  5739. "next_round_表情包抽象_r1_8",
  5740. "next_round_表情包搞笑配文_r1_9",
  5741. "next_round_梗图搞笑_r1_10",
  5742. "next_round_表情包图片大全_r1_11"
  5743. ],
  5744. "13": [
  5745. "sug_如何用兔子警官的口气讲话_r1_q0_0",
  5746. "sug_如何快速减肥_r1_q0_1",
  5747. "sug_如何培养男人主动给你花钱_r1_q0_2",
  5748. "sug_如何快速挣到钱_r1_q0_3",
  5749. "sug_如何和女生聊天找话题_r1_q0_4",
  5750. "sug_如何连接别人家的加密wifi_r1_q0_5",
  5751. "sug_如何逼自己自律学习_r1_q0_6",
  5752. "sug_如何让男生持续上头_r1_q0_7",
  5753. "sug_如何治疗早泻时间短_r1_q0_8",
  5754. "sug_如何快速入睡_r1_q0_9",
  5755. "sug_制作ppt_r1_q1_0",
  5756. "sug_制作表情包_r1_q1_1",
  5757. "sug_制作简历_r1_q1_2",
  5758. "sug_制作ppt的ai软件_r1_q1_3",
  5759. "sug_制作冰糖葫芦_r1_q1_4",
  5760. "sug_制作视频_r1_q1_5",
  5761. "sug_制作简易调光台灯_r1_q1_6",
  5762. "sug_制作动物书_r1_q1_7",
  5763. "sug_制作香水_r1_q1_8",
  5764. "sug_制作美食_r1_q1_9",
  5765. "sug_猫咪领养免费领养_r1_q2_0",
  5766. "sug_猫咪叫声吸引小猫_r1_q2_1",
  5767. "sug_猫咪头像_r1_q2_2",
  5768. "sug_猫咪呕吐_r1_q2_3",
  5769. "sug_猫咪零食_r1_q2_4",
  5770. "sug_猫咪驱虫药推荐_r1_q2_5",
  5771. "sug_猫咪尿闭怎么在家治疗_r1_q2_6",
  5772. "sug_猫咪品种_r1_q2_7",
  5773. "sug_猫咪玩具_r1_q2_8",
  5774. "sug_猫咪感冒打喷嚏吃什么药_r1_q2_9",
  5775. "sug_表情包抽象_r1_q3_0",
  5776. "sug_表情包怎么制作_r1_q3_1",
  5777. "sug_表情包可爱_r1_q3_2",
  5778. "sug_表情包图片大全_r1_q3_3",
  5779. "sug_表情包搞笑配文_r1_q3_4",
  5780. "sug_表情包模板_r1_q3_5",
  5781. "sug_表情包发给女朋友_r1_q3_6",
  5782. "sug_表情包制作赚钱_r1_q3_7",
  5783. "sug_表情包平静发疯_r1_q3_8",
  5784. "sug_表情包评论区自取_r1_q3_9",
  5785. "sug_梗图素材_r1_q4_0",
  5786. "sug_梗图搞笑_r1_q4_1",
  5787. "sug_梗图精神状态_r1_q4_2",
  5788. "sug_谐音梗猜图_r1_q4_3",
  5789. "sug_梗图meme_r1_q4_4",
  5790. "sug_梗图双人_r1_q4_5",
  5791. "sug_梗图抽象_r1_q4_6",
  5792. "sug_梗图描改_r1_q4_7",
  5793. "sug_梗图分享_r1_q4_8",
  5794. "sug_梗图模版_r1_q4_9",
  5795. "post_66f9046a000000002a033202_0_0",
  5796. "post_668e06cd00000000250145fe_0_1",
  5797. "post_671d9a72000000001402e50f_0_2",
  5798. "post_666978a7000000001c023418_0_3",
  5799. "post_68543e700000000017036013_0_4",
  5800. "post_674962d800000000020393bc_0_5",
  5801. "post_66d1312d000000001d014731_0_6",
  5802. "post_68919d0e00000000220216b4_0_7",
  5803. "post_679086f0000000001703826a_0_8",
  5804. "post_65e3cd98000000000b0186bb_0_9",
  5805. "post_66ea4e30000000001e01964b_1_0",
  5806. "post_668e06cd00000000250145fe_1_1",
  5807. "post_68282bbd000000002001f349_1_2",
  5808. "post_68bc2916000000001d00aa35_1_3",
  5809. "post_6876f73f0000000011002f0c_1_4",
  5810. "post_68919d0e00000000220216b4_1_5",
  5811. "post_666978a7000000001c023418_1_6",
  5812. "post_66d1312d000000001d014731_1_7",
  5813. "post_66b23cd4000000000503384f_1_8",
  5814. "post_659e9d970000000012009274_1_9"
  5815. ]
  5816. },
  5817. "fullData": null
  5818. };
  5819. // 根据节点类型获取边框颜色
  5820. function getNodeTypeColor(type) {
  5821. const typeColors = {
  5822. 'root': '#6b21a8', // 紫色 - 根节点
  5823. 'round': '#7c3aed', // 深紫 - Round节点
  5824. 'step': '#f59e0b', // 橙色 - 步骤节点
  5825. 'seg': '#10b981', // 绿色 - 分词
  5826. 'q': '#3b82f6', // 蓝色 - Query
  5827. 'sug': '#06b6d4', // 青色 - Sug建议词
  5828. 'seed': '#84cc16', // 黄绿 - Seed
  5829. 'add_word': '#22c55e', // 绿色 - 加词生成
  5830. 'search_word': '#8b5cf6', // 紫色 - 搜索词
  5831. 'post': '#ec4899', // 粉色 - 帖子
  5832. 'filtered_sug': '#14b8a6',// 青绿 - 筛选的sug
  5833. 'next_q': '#2563eb', // 深蓝 - 下轮查询
  5834. 'next_seed': '#65a30d', // 深黄绿 - 下轮种子
  5835. 'search': '#8b5cf6', // 深紫 - 搜索(兼容旧版)
  5836. 'operation': '#f59e0b', // 橙色 - 操作节点(兼容旧版)
  5837. 'query': '#3b82f6', // 蓝色 - 查询(兼容旧版)
  5838. 'note': '#ec4899', // 粉色 - 帖子(兼容旧版)
  5839. };
  5840. return typeColors[type] || '#9ca3af';
  5841. }
  5842. // 查询节点组件 - 卡片样式
  5843. function QueryNode({ id, data, sourcePosition, targetPosition }) {
  5844. // 所有节点默认展开
  5845. const expanded = true;
  5846. // 获取节点类型颜色
  5847. const typeColor = getNodeTypeColor(data.nodeType || 'query');
  5848. return (
  5849. <div>
  5850. <Handle
  5851. type="target"
  5852. position={targetPosition || Position.Left}
  5853. style={{ background: typeColor, width: 8, height: 8 }}
  5854. />
  5855. <div
  5856. style={{
  5857. padding: '12px',
  5858. borderRadius: '8px',
  5859. border: data.isHighlighted ? `3px solid ${typeColor}` :
  5860. data.isCollapsed ? `2px solid ${typeColor}` :
  5861. data.isSelected === false ? '2px dashed #d1d5db' :
  5862. `2px solid ${typeColor}`,
  5863. background: data.isHighlighted ? '#eef2ff' :
  5864. data.isSelected === false ? '#f9fafb' : 'white',
  5865. minWidth: '200px',
  5866. maxWidth: '280px',
  5867. boxShadow: data.isHighlighted ? '0 0 0 4px rgba(102, 126, 234, 0.25), 0 4px 16px rgba(102, 126, 234, 0.4)' :
  5868. data.isCollapsed ? '0 4px 12px rgba(102, 126, 234, 0.15)' :
  5869. data.level === 0 ? '0 4px 12px rgba(139, 92, 246, 0.15)' : '0 2px 6px rgba(0, 0, 0, 0.06)',
  5870. transition: 'all 0.3s ease',
  5871. cursor: 'pointer',
  5872. position: 'relative',
  5873. opacity: data.isSelected === false ? 0.6 : 1,
  5874. }}
  5875. >
  5876. {/* 折叠当前节点按钮 - 左边 */}
  5877. <div
  5878. style={{
  5879. position: 'absolute',
  5880. top: '6px',
  5881. left: '6px',
  5882. width: '20px',
  5883. height: '20px',
  5884. borderRadius: '50%',
  5885. background: '#f59e0b',
  5886. color: 'white',
  5887. display: 'flex',
  5888. alignItems: 'center',
  5889. justifyContent: 'center',
  5890. fontSize: '11px',
  5891. fontWeight: 'bold',
  5892. cursor: 'pointer',
  5893. transition: 'all 0.2s ease',
  5894. zIndex: 10,
  5895. }}
  5896. onClick={(e) => {
  5897. e.stopPropagation();
  5898. if (data.onHideSelf) {
  5899. data.onHideSelf();
  5900. }
  5901. }}
  5902. onMouseEnter={(e) => {
  5903. e.currentTarget.style.background = '#d97706';
  5904. }}
  5905. onMouseLeave={(e) => {
  5906. e.currentTarget.style.background = '#f59e0b';
  5907. }}
  5908. title="隐藏当前节点"
  5909. >
  5910. ×
  5911. </div>
  5912. {/* 聚焦按钮 - 右上角 */}
  5913. <div
  5914. style={{
  5915. position: 'absolute',
  5916. top: '6px',
  5917. right: '6px',
  5918. width: '20px',
  5919. height: '20px',
  5920. borderRadius: '50%',
  5921. background: data.isFocused ? '#10b981' : '#e5e7eb',
  5922. color: data.isFocused ? 'white' : '#6b7280',
  5923. display: 'flex',
  5924. alignItems: 'center',
  5925. justifyContent: 'center',
  5926. fontSize: '11px',
  5927. fontWeight: 'bold',
  5928. cursor: 'pointer',
  5929. transition: 'all 0.2s ease',
  5930. zIndex: 10,
  5931. }}
  5932. onClick={(e) => {
  5933. e.stopPropagation();
  5934. if (data.onFocus) {
  5935. data.onFocus();
  5936. }
  5937. }}
  5938. onMouseEnter={(e) => {
  5939. if (!data.isFocused) {
  5940. e.currentTarget.style.background = '#d1d5db';
  5941. }
  5942. }}
  5943. onMouseLeave={(e) => {
  5944. if (!data.isFocused) {
  5945. e.currentTarget.style.background = '#e5e7eb';
  5946. }
  5947. }}
  5948. title={data.isFocused ? '取消聚焦' : '聚焦到此节点'}
  5949. >
  5950. 🎯
  5951. </div>
  5952. {/* 折叠/展开子节点按钮 - 右边第二个位置 */}
  5953. {data.hasChildren && (
  5954. <div
  5955. style={{
  5956. position: 'absolute',
  5957. top: '6px',
  5958. right: '30px',
  5959. width: '20px',
  5960. height: '20px',
  5961. borderRadius: '50%',
  5962. background: data.isCollapsed ? '#667eea' : '#e5e7eb',
  5963. color: data.isCollapsed ? 'white' : '#6b7280',
  5964. display: 'flex',
  5965. alignItems: 'center',
  5966. justifyContent: 'center',
  5967. fontSize: '11px',
  5968. fontWeight: 'bold',
  5969. cursor: 'pointer',
  5970. transition: 'all 0.2s ease',
  5971. zIndex: 10,
  5972. }}
  5973. onClick={(e) => {
  5974. e.stopPropagation();
  5975. data.onToggleCollapse();
  5976. }}
  5977. title={data.isCollapsed ? '展开子节点' : '折叠子节点'}
  5978. >
  5979. {data.isCollapsed ? '+' : '−'}
  5980. </div>
  5981. )}
  5982. {/* 卡片内容 */}
  5983. <div>
  5984. {/* 标题行 */}
  5985. <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start', marginBottom: '8px', paddingLeft: '24px', paddingRight: data.hasChildren ? '54px' : '28px' }}>
  5986. <div style={{ flex: 1 }}>
  5987. <div style={{ display: 'flex', alignItems: 'center', gap: '4px', marginBottom: '3px' }}>
  5988. <div style={{
  5989. fontSize: '13px',
  5990. fontWeight: data.level === 0 ? '700' : '600',
  5991. color: data.level === 0 ? '#6b21a8' : '#1f2937',
  5992. lineHeight: '1.3',
  5993. flex: 1,
  5994. }}>
  5995. {data.title}
  5996. </div>
  5997. {data.isSelected === false && (
  5998. <div style={{
  5999. fontSize: '9px',
  6000. padding: '1px 4px',
  6001. borderRadius: '3px',
  6002. background: '#fee2e2',
  6003. color: '#991b1b',
  6004. fontWeight: '500',
  6005. flexShrink: 0,
  6006. }}>
  6007. 未选中
  6008. </div>
  6009. )}
  6010. </div>
  6011. </div>
  6012. </div>
  6013. {/* 展开的详细信息 - 始终显示 */}
  6014. <div style={{ fontSize: '11px', lineHeight: 1.4 }}>
  6015. <div style={{ display: 'flex', gap: '4px', marginBottom: '6px', flexWrap: 'wrap' }}>
  6016. <span style={{
  6017. display: 'inline-block',
  6018. padding: '1px 6px',
  6019. borderRadius: '10px',
  6020. background: '#eff6ff',
  6021. color: '#3b82f6',
  6022. fontSize: '10px',
  6023. fontWeight: '500',
  6024. }}>
  6025. Lv.{data.level}
  6026. </span>
  6027. <span style={{
  6028. display: 'inline-block',
  6029. padding: '1px 6px',
  6030. borderRadius: '10px',
  6031. background: '#f0fdf4',
  6032. color: '#16a34a',
  6033. fontSize: '10px',
  6034. fontWeight: '500',
  6035. }}>
  6036. {data.score}
  6037. </span>
  6038. {data.strategy && data.strategy !== 'root' && (
  6039. <span style={{
  6040. display: 'inline-block',
  6041. padding: '1px 6px',
  6042. borderRadius: '10px',
  6043. background: '#fef3c7',
  6044. color: '#92400e',
  6045. fontSize: '10px',
  6046. fontWeight: '500',
  6047. }}>
  6048. {data.strategy}
  6049. </span>
  6050. )}
  6051. {(data.typeLabel || data.type_label) && (
  6052. <span style={{
  6053. display: 'inline-block',
  6054. padding: '1px 6px',
  6055. borderRadius: '10px',
  6056. background: '#fce7f3',
  6057. color: '#9f1239',
  6058. fontSize: '10px',
  6059. fontWeight: '500',
  6060. }}>
  6061. {data.typeLabel || data.type_label}
  6062. </span>
  6063. )}
  6064. {data.is_suggestion && data.suggestion_label && (
  6065. <span style={{
  6066. display: 'inline-block',
  6067. padding: '1px 6px',
  6068. borderRadius: '10px',
  6069. background: '#ede9fe',
  6070. color: '#6d28d9',
  6071. fontSize: '10px',
  6072. fontWeight: '600',
  6073. }}>
  6074. {data.suggestion_label}
  6075. </span>
  6076. )}
  6077. </div>
  6078. {data.parent && (
  6079. <div style={{ color: '#6b7280', fontSize: '10px', marginTop: '4px', paddingTop: '4px', borderTop: '1px solid #f3f4f6' }}>
  6080. <strong>Parent:</strong> {data.parent}
  6081. </div>
  6082. )}
  6083. {data.nodeType === 'domain_combination' && Array.isArray(data.source_word_details) && data.source_word_details.length > 0 && (
  6084. <div style={{
  6085. marginTop: '6px',
  6086. paddingTop: '6px',
  6087. borderTop: '1px solid #f3f4f6',
  6088. fontSize: '10px',
  6089. color: '#6b7280',
  6090. lineHeight: '1.5',
  6091. }}>
  6092. <strong style={{ color: '#4b5563' }}>来源词得分:</strong>
  6093. <div style={{ marginTop: '4px', display: 'flex', flexDirection: 'column', gap: '4px' }}>
  6094. {data.source_word_details.map((detail, idx) => {
  6095. const words = (detail.words || []).map((w) => {
  6096. const numericScore = typeof w.score === 'number' ? w.score : parseFloat(w.score || '0');
  6097. const formattedScore = Number.isFinite(numericScore) ? numericScore.toFixed(2) : '0.00';
  6098. return w.text + ' (' + formattedScore + ')';
  6099. }).join(' + ');
  6100. return (
  6101. <div key={idx} style={{ display: 'flex', flexWrap: 'wrap', gap: '4px', alignItems: 'center' }}>
  6102. <span style={{ color: '#2563eb' }}>{words}</span>
  6103. </div>
  6104. );
  6105. })}
  6106. </div>
  6107. <div style={{ marginTop: '4px', fontWeight: '500', color: data.is_above_sources ? '#16a34a' : '#dc2626' }}>
  6108. {data.is_above_sources ? '✅ 组合得分高于所有来源词' : '⚠️ 组合得分未超过全部来源词'}
  6109. </div>
  6110. </div>
  6111. )}
  6112. {data.selectedWord && (
  6113. <div style={{
  6114. marginTop: '6px',
  6115. paddingTop: '6px',
  6116. borderTop: '1px solid #f3f4f6',
  6117. fontSize: '10px',
  6118. color: '#6b7280',
  6119. lineHeight: '1.5',
  6120. }}>
  6121. <strong style={{ color: '#4b5563' }}>选择词:</strong>
  6122. <span style={{ marginLeft: '4px', color: '#3b82f6', fontWeight: '500' }}>{data.selectedWord}</span>
  6123. {data.seed_score !== undefined && (
  6124. <div style={{ marginTop: '4px' }}>
  6125. <strong style={{ color: '#4b5563' }}>种子得分:</strong>
  6126. <span style={{ marginLeft: '4px', color: '#16a34a', fontWeight: '500' }}>
  6127. {typeof data.seed_score === 'number' ? data.seed_score.toFixed(2) : data.seed_score}
  6128. </span>
  6129. </div>
  6130. )}
  6131. </div>
  6132. )}
  6133. {data.evaluationReason && (
  6134. <div style={{
  6135. marginTop: '6px',
  6136. paddingTop: '6px',
  6137. borderTop: '1px solid #f3f4f6',
  6138. fontSize: '10px',
  6139. color: '#6b7280',
  6140. lineHeight: '1.5',
  6141. }}>
  6142. <strong style={{ color: '#4b5563' }}>评估:</strong>
  6143. <div style={{ marginTop: '2px' }}>{data.evaluationReason}</div>
  6144. </div>
  6145. )}
  6146. {data.occurrences && data.occurrences.length > 1 && (
  6147. <div style={{
  6148. marginTop: '6px',
  6149. paddingTop: '6px',
  6150. borderTop: '1px solid #f3f4f6',
  6151. fontSize: '10px',
  6152. color: '#6b7280',
  6153. }}>
  6154. <strong style={{ color: '#4b5563' }}>演化历史 ({data.occurrences.length}次):</strong>
  6155. <div style={{ marginTop: '4px' }}>
  6156. {data.occurrences.map((occ, idx) => (
  6157. <div key={idx} style={{ marginTop: '2px', paddingLeft: '8px' }}>
  6158. <span style={{ color: '#3b82f6', fontWeight: '500' }}>R{occ.round}</span>
  6159. {' · '}
  6160. <span>{occ.strategy}</span>
  6161. {occ.score !== undefined && (
  6162. <span style={{ color: '#16a34a', marginLeft: '4px' }}>
  6163. ({typeof occ.score === 'number' ? occ.score.toFixed(2) : occ.score})
  6164. </span>
  6165. )}
  6166. </div>
  6167. ))}
  6168. </div>
  6169. </div>
  6170. )}
  6171. {data.hasSearchResults && (
  6172. <div style={{
  6173. marginTop: '6px',
  6174. paddingTop: '6px',
  6175. borderTop: '1px solid #f3f4f6',
  6176. fontSize: '10px',
  6177. background: '#fef3c7',
  6178. padding: '4px 6px',
  6179. borderRadius: '4px',
  6180. color: '#92400e',
  6181. fontWeight: '500',
  6182. }}>
  6183. 🔍 找到 {data.postCount} 个帖子
  6184. </div>
  6185. )}
  6186. </div>
  6187. </div>
  6188. </div>
  6189. <Handle
  6190. type="source"
  6191. position={sourcePosition || Position.Right}
  6192. style={{ background: '#667eea', width: 8, height: 8 }}
  6193. />
  6194. </div>
  6195. );
  6196. }
  6197. // 笔记节点组件 - 卡片样式,带轮播图
  6198. function NoteNode({ id, data, sourcePosition, targetPosition }) {
  6199. const [currentImageIndex, setCurrentImageIndex] = useState(0);
  6200. const [showEvalDetails, setShowEvalDetails] = useState(false);
  6201. const expanded = true;
  6202. const hasImages = data.imageList && data.imageList.length > 0;
  6203. const nextImage = (e) => {
  6204. e.stopPropagation();
  6205. if (hasImages) {
  6206. setCurrentImageIndex((prev) => (prev + 1) % data.imageList.length);
  6207. }
  6208. };
  6209. const prevImage = (e) => {
  6210. e.stopPropagation();
  6211. if (hasImages) {
  6212. setCurrentImageIndex((prev) => (prev - 1 + data.imageList.length) % data.imageList.length);
  6213. }
  6214. };
  6215. const handleCardClick = (e) => {
  6216. // 如果点击的是链接或按钮(或其子元素),不处理(避免双重触发)
  6217. if (e.target.closest('a') || e.target.closest('button')) {
  6218. return;
  6219. }
  6220. // 打开原帖链接
  6221. if (data.note_url) {
  6222. window.open(data.note_url, '_blank', 'noopener,noreferrer');
  6223. }
  6224. };
  6225. return (
  6226. <div>
  6227. <Handle
  6228. type="target"
  6229. position={targetPosition || Position.Left}
  6230. style={{ background: '#ec4899', width: 8, height: 8 }}
  6231. />
  6232. <div
  6233. onClick={handleCardClick}
  6234. style={{
  6235. padding: '28px',
  6236. borderRadius: '40px',
  6237. border: data.isHighlighted ? '6px solid #ec4899' : '4px solid #fce7f3',
  6238. background: data.isHighlighted ? '#eef2ff' : 'white',
  6239. minWidth: '880px',
  6240. maxWidth: '1200px',
  6241. boxShadow: data.isHighlighted ? '0 0 0 8px rgba(236, 72, 153, 0.25), 0 8px 32px rgba(236, 72, 153, 0.4)' : '0 8px 24px rgba(236, 72, 153, 0.15)',
  6242. transition: 'all 0.3s ease',
  6243. cursor: 'pointer',
  6244. }}
  6245. >
  6246. {/* 🆕 原始问题展示 - 最顶部 */}
  6247. {data.originalQuestion && (
  6248. <div style={{
  6249. marginBottom: '20px',
  6250. paddingBottom: '20px',
  6251. borderBottom: '2px solid #fce7f3',
  6252. }}>
  6253. <div style={{
  6254. fontSize: '36px',
  6255. color: '#6b21a8',
  6256. lineHeight: '1.4',
  6257. fontWeight: '600',
  6258. }}>
  6259. <span style={{ fontWeight: '700' }}>[原始需求问题]</span> {data.originalQuestion}
  6260. </div>
  6261. </div>
  6262. )}
  6263. {/* 帖子标题 - 明确标注 */}
  6264. <div style={{ marginBottom: '20px', paddingBottom: '16px', borderBottom: '2px solid #fce7f3' }}>
  6265. <div style={{ fontSize: '38px', fontWeight: '600', color: '#831843', lineHeight: '1.4' }}>
  6266. <span style={{ fontSize: '32px', color: '#831843', fontWeight: '500' }}>帖子标题: </span>
  6267. {data.title.replace(/^[R]s*/, '')}
  6268. </div>
  6269. </div>
  6270. {/* V3评估信息 - 可展开 */}
  6271. {data.evaluator_version === 'v3.0' && (
  6272. <div style={{ marginBottom: '20px', paddingBottom: '16px', borderBottom: '2px solid #fce7f3' }}>
  6273. {/* 第1行:知识判定 + 内容知识 + 星级 */}
  6274. <div style={{ display: 'flex', alignItems: 'center', gap: '20px', marginBottom: '10px', flexWrap: 'wrap' }}>
  6275. <span style={{ fontSize: '28px', fontWeight: '600', color: data.is_knowledge ? '#166534' : '#991b1b' }}>
  6276. {data.is_knowledge ? '✓ 是知识' : '✗ 非知识'}
  6277. </span>
  6278. {data.is_content_knowledge !== null && data.is_content_knowledge !== undefined && (
  6279. <>
  6280. <span style={{ fontSize: '28px', fontWeight: '600', color: data.is_content_knowledge ? '#166534' : '#991b1b' }}>
  6281. {data.is_content_knowledge ? '✓ 是内容知识' : '✗ 非内容知识'}
  6282. </span>
  6283. {data.is_content_knowledge && data.content_knowledge_evaluation?.knowledge_score != null && (
  6284. <span style={{ fontSize: '24px', lineHeight: '1' }}>
  6285. {'⭐'.repeat(Math.min(5, Math.ceil(data.content_knowledge_evaluation.knowledge_score / 20)))}
  6286. </span>
  6287. )}
  6288. {data.is_content_knowledge && data.content_knowledge_evaluation?.knowledge_score != null && (
  6289. <span style={{ fontSize: '26px', fontWeight: '600', color: '#166534' }}>
  6290. {data.content_knowledge_evaluation.knowledge_score}分
  6291. </span>
  6292. )}
  6293. </>
  6294. )}
  6295. </div>
  6296. {/* 第2行:匹配度得分 + 详情 + 展开按钮 */}
  6297. {data.is_content_knowledge && data.final_score !== null && data.final_score !== undefined && (
  6298. <div style={{ display: 'flex', alignItems: 'center', gap: '16px', flexWrap: 'wrap', marginBottom: '12px' }}>
  6299. <span style={{ fontSize: '32px', fontWeight: '700', color: data.final_score >= 60 ? '#166534' : '#ea580c' }}>
  6300. 匹配度得分 {data.final_score.toFixed(1)}分
  6301. </span>
  6302. <span style={{
  6303. padding: '4px 16px',
  6304. borderRadius: '20px',
  6305. fontSize: '26px',
  6306. fontWeight: '600',
  6307. background: data.final_score >= 85 ? '#dcfce7' : data.final_score >= 60 ? '#fef3c7' : '#fee2e2',
  6308. color: data.final_score >= 85 ? '#166534' : data.final_score >= 60 ? '#854d0e' : '#991b1b'
  6309. }}>
  6310. {data.match_level}
  6311. </span>
  6312. {data.purpose_score != null && (
  6313. <span style={{ fontSize: '26px', color: '#9f1239' }}>
  6314. 目的{data.purpose_score}分
  6315. </span>
  6316. )}
  6317. {data.category_score != null && (
  6318. <span style={{ fontSize: '26px', color: '#9f1239' }}>
  6319. 品类{data.category_score}分
  6320. </span>
  6321. )}
  6322. <button
  6323. onClick={(e) => { e.stopPropagation(); setShowEvalDetails(!showEvalDetails); }}
  6324. style={{
  6325. fontSize: '24px',
  6326. padding: '6px 16px',
  6327. borderRadius: '12px',
  6328. border: '2px solid #ec4899',
  6329. background: 'white',
  6330. color: '#ec4899',
  6331. cursor: 'pointer',
  6332. fontWeight: '600',
  6333. transition: 'all 0.2s'
  6334. }}
  6335. >
  6336. {showEvalDetails ? '收起详情 ▲' : '展开详情 ▼'}
  6337. </button>
  6338. </div>
  6339. )}
  6340. {/* 详细内容(展开后显示) */}
  6341. {showEvalDetails && (
  6342. <div style={{ marginTop: '16px', paddingTop: '16px', borderTop: '1px solid #f3f4f6' }}>
  6343. {/* 1. 知识评估 */}
  6344. {data.is_knowledge !== null && (
  6345. <div style={{ marginBottom: '16px', padding: '12px', background: '#fafafa', borderRadius: '8px' }}>
  6346. <div style={{ fontSize: '26px', fontWeight: '600', color: '#831843', marginBottom: '8px' }}>
  6347. 1️⃣ 知识评估
  6348. </div>
  6349. <div style={{ fontSize: '24px', color: '#9f1239', lineHeight: '1.4' }}>
  6350. {data.knowledge_evaluation?.conclusion || '无评估信息'}
  6351. </div>
  6352. </div>
  6353. )}
  6354. {/* 2. 内容知识评估 */}
  6355. {data.is_content_knowledge && data.content_knowledge_evaluation && (
  6356. <div style={{ marginBottom: '16px', padding: '12px', background: '#fafafa', borderRadius: '8px' }}>
  6357. <div style={{ fontSize: '26px', fontWeight: '600', color: '#831843', marginBottom: '8px' }}>
  6358. 2️⃣ 内容知识评估 ({data.knowledge_score || 0}分)
  6359. </div>
  6360. <div style={{ fontSize: '24px', color: '#9f1239', lineHeight: '1.4' }}>
  6361. {data.content_knowledge_evaluation.summary || '无评估信息'}
  6362. </div>
  6363. </div>
  6364. )}
  6365. {/* 3. 与原始需求匹配 */}
  6366. {(data.purpose_evaluation || data.category_evaluation) && (
  6367. <div style={{ marginBottom: '16px', padding: '12px', background: '#fafafa', borderRadius: '8px' }}>
  6368. <div style={{ fontSize: '26px', fontWeight: '600', color: '#831843', marginBottom: '8px' }}>
  6369. 3️⃣ 与原始需求匹配
  6370. </div>
  6371. {data.purpose_evaluation && (
  6372. <div style={{ fontSize: '24px', color: '#9f1239', lineHeight: '1.4', marginBottom: '12px' }}>
  6373. <div style={{ fontWeight: '600', marginBottom: '6px' }}>
  6374. 目的性匹配({data.purpose_score}分,占比70%)
  6375. </div>
  6376. <div>{data.purpose_evaluation.core_basis || '无评估信息'}</div>
  6377. </div>
  6378. )}
  6379. {data.category_evaluation && (
  6380. <div style={{ fontSize: '24px', color: '#9f1239', lineHeight: '1.4' }}>
  6381. <div style={{ fontWeight: '600', marginBottom: '6px' }}>
  6382. 品类匹配({data.category_score}分,占比30%)
  6383. </div>
  6384. <div>{data.category_evaluation.core_basis || '无评估信息'}</div>
  6385. </div>
  6386. )}
  6387. </div>
  6388. )}
  6389. </div>
  6390. )}
  6391. </div>
  6392. )}
  6393. {/* V2评估信息 - 兼容旧数据 */}
  6394. {data.evaluator_version !== 'v3.0' && (data.knowledge_score !== undefined || data.post_relevance_score !== undefined || data.is_knowledge !== undefined) && (
  6395. <div style={{
  6396. marginBottom: '20px',
  6397. paddingBottom: '16px',
  6398. borderBottom: '2px solid #fce7f3',
  6399. }}>
  6400. {/* 知识评估 (V2) */}
  6401. {(data.knowledge_score !== undefined || data.is_knowledge !== undefined) && (
  6402. <div style={{ marginBottom: '16px' }}>
  6403. <div style={{ display: 'flex', alignItems: 'center', gap: '16px', marginBottom: '8px' }}>
  6404. {data.knowledge_level && (
  6405. <span style={{ fontSize: '24px', lineHeight: '1' }}>
  6406. {'⭐'.repeat(data.knowledge_level)}
  6407. </span>
  6408. )}
  6409. {data.knowledge_score != null && (
  6410. <span style={{
  6411. fontSize: '34px',
  6412. fontWeight: '700',
  6413. color: data.knowledge_score >= 70 ? '#166534' : data.knowledge_score >= 40 ? '#854d0e' : '#991b1b',
  6414. }}>
  6415. 知识: {data.knowledge_score.toFixed(0)}分
  6416. </span>
  6417. )}
  6418. {!data.knowledge_score && data.is_knowledge !== undefined && (
  6419. <span style={{
  6420. display: 'inline-block',
  6421. padding: '6px 20px',
  6422. borderRadius: '24px',
  6423. fontSize: '34px',
  6424. fontWeight: '600',
  6425. background: data.is_knowledge ? '#dcfce7' : '#fee2e2',
  6426. color: data.is_knowledge ? '#166534' : '#991b1b',
  6427. }}>
  6428. {data.is_knowledge ? '✓ 知识' : '✗ 非知识'}
  6429. </span>
  6430. )}
  6431. </div>
  6432. {data.knowledge_evaluation?.summary && (
  6433. <div style={{ fontSize: '30px', color: '#9f1239', lineHeight: '1.4', marginTop: '8px' }}>
  6434. {data.knowledge_evaluation.summary}
  6435. </div>
  6436. )}
  6437. {!data.knowledge_evaluation?.summary && data.knowledge_reason && (
  6438. <div style={{ fontSize: '30px', color: '#9f1239', lineHeight: '1.4', marginTop: '8px' }}>
  6439. {data.knowledge_reason}
  6440. </div>
  6441. )}
  6442. </div>
  6443. )}
  6444. {/* 相关性评估 (V2) */}
  6445. {data.post_relevance_score != null && (
  6446. <div>
  6447. <div style={{ display: 'flex', alignItems: 'center', gap: '12px', marginBottom: '8px' }}>
  6448. <span style={{ fontSize: '34px', fontWeight: '600', color: '#9f1239' }}>
  6449. 相关性: {data.post_relevance_score.toFixed(0)}分
  6450. </span>
  6451. {data.relevance_conclusion && (
  6452. <span style={{
  6453. padding: '4px 16px',
  6454. borderRadius: '20px',
  6455. fontSize: '30px',
  6456. fontWeight: '600',
  6457. background: data.relevance_conclusion.includes('高度') ? '#dcfce7' : data.relevance_conclusion.includes('中度') ? '#fef3c7' : '#fee2e2',
  6458. color: data.relevance_conclusion.includes('高度') ? '#166534' : data.relevance_conclusion.includes('中度') ? '#854d0e' : '#991b1b',
  6459. }}>
  6460. {data.relevance_conclusion}
  6461. </span>
  6462. )}
  6463. </div>
  6464. {data.relevance_evaluation?.summary && (
  6465. <div style={{ fontSize: '30px', color: '#9f1239', lineHeight: '1.4' }}>
  6466. {data.relevance_evaluation.summary}
  6467. </div>
  6468. )}
  6469. {data.relevance_evaluation?.purpose_score != null && data.relevance_evaluation?.category_score != null && (
  6470. <div style={{ fontSize: '28px', color: '#9f1239', marginTop: '6px', opacity: 0.8 }}>
  6471. 目的性:{data.relevance_evaluation.purpose_score.toFixed(0)}分(70%) |
  6472. 品类:{data.relevance_evaluation.category_score.toFixed(0)}分(30%)
  6473. </div>
  6474. )}
  6475. </div>
  6476. )}
  6477. </div>
  6478. )}
  6479. {/* 轮播图 */}
  6480. {hasImages && (
  6481. <div style={{
  6482. position: 'relative',
  6483. marginBottom: '16px',
  6484. borderRadius: '24px',
  6485. overflow: 'hidden',
  6486. }}>
  6487. <img
  6488. src={data.imageList[currentImageIndex].image_url}
  6489. alt={`Image ${currentImageIndex + 1}`}
  6490. style={{
  6491. width: '100%',
  6492. aspectRatio: '1/1',
  6493. height: 'auto',
  6494. objectFit: 'cover',
  6495. display: 'block',
  6496. }}
  6497. onError={(e) => {
  6498. e.target.style.display = 'none';
  6499. }}
  6500. />
  6501. {data.imageList.length > 1 && (
  6502. <>
  6503. {/* 左右切换按钮 */}
  6504. <button
  6505. onClick={prevImage}
  6506. style={{
  6507. position: 'absolute',
  6508. left: '8px',
  6509. top: '50%',
  6510. transform: 'translateY(-50%)',
  6511. background: 'rgba(0, 0, 0, 0.5)',
  6512. color: 'white',
  6513. border: 'none',
  6514. borderRadius: '50%',
  6515. width: '48px',
  6516. height: '48px',
  6517. cursor: 'pointer',
  6518. display: 'flex',
  6519. alignItems: 'center',
  6520. justifyContent: 'center',
  6521. fontSize: '28px',
  6522. }}
  6523. >
  6524. </button>
  6525. <button
  6526. onClick={nextImage}
  6527. style={{
  6528. position: 'absolute',
  6529. right: '8px',
  6530. top: '50%',
  6531. transform: 'translateY(-50%)',
  6532. background: 'rgba(0, 0, 0, 0.5)',
  6533. color: 'white',
  6534. border: 'none',
  6535. borderRadius: '50%',
  6536. width: '48px',
  6537. height: '48px',
  6538. cursor: 'pointer',
  6539. display: 'flex',
  6540. alignItems: 'center',
  6541. justifyContent: 'center',
  6542. fontSize: '28px',
  6543. }}
  6544. >
  6545. </button>
  6546. {/* 图片计数 */}
  6547. <div style={{
  6548. position: 'absolute',
  6549. bottom: '8px',
  6550. right: '8px',
  6551. background: 'rgba(0, 0, 0, 0.6)',
  6552. color: 'white',
  6553. padding: '4px 12px',
  6554. borderRadius: '20px',
  6555. fontSize: '20px',
  6556. }}>
  6557. {currentImageIndex + 1}/{data.imageList.length}
  6558. </div>
  6559. </>
  6560. )}
  6561. </div>
  6562. )}
  6563. {/* 互动数据 */}
  6564. {data.interact_info && (
  6565. <div style={{
  6566. display: 'flex',
  6567. gap: '16px',
  6568. marginBottom: '16px',
  6569. flexWrap: 'wrap',
  6570. fontSize: '22px',
  6571. color: '#9f1239',
  6572. }}>
  6573. {data.interact_info.liked_count > 0 && (
  6574. <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>
  6575. ❤️ {data.interact_info.liked_count}
  6576. </span>
  6577. )}
  6578. {data.interact_info.collected_count > 0 && (
  6579. <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>
  6580. ⭐ {data.interact_info.collected_count}
  6581. </span>
  6582. )}
  6583. {data.interact_info.comment_count > 0 && (
  6584. <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>
  6585. 💬 {data.interact_info.comment_count}
  6586. </span>
  6587. )}
  6588. {data.interact_info.shared_count > 0 && (
  6589. <span style={{ display: 'flex', alignItems: 'center', gap: '4px' }}>
  6590. 🔗 {data.interact_info.shared_count}
  6591. </span>
  6592. )}
  6593. </div>
  6594. )}
  6595. {/* 被哪些query找到 */}
  6596. {data.foundByQueries && data.foundByQueries.length > 0 && (
  6597. <div style={{
  6598. marginBottom: '16px',
  6599. padding: '12px 16px',
  6600. background: '#f0fdf4',
  6601. borderRadius: '12px',
  6602. fontSize: '20px',
  6603. }}>
  6604. <strong style={{ color: '#16a34a' }}>🔍 被找到:</strong>
  6605. <div style={{ marginTop: '8px', display: 'flex', flexWrap: 'wrap', gap: '8px' }}>
  6606. {data.foundByQueries.map((query, idx) => (
  6607. <span key={idx} style={{
  6608. display: 'inline-block',
  6609. padding: '4px 12px',
  6610. background: '#dcfce7',
  6611. color: '#166534',
  6612. borderRadius: '8px',
  6613. fontSize: '18px',
  6614. }}>
  6615. {query}
  6616. </span>
  6617. ))}
  6618. </div>
  6619. {data.foundInRounds && data.foundInRounds.length > 0 && (
  6620. <div style={{ marginTop: '8px', color: '#6b7280' }}>
  6621. 出现在: Round {data.foundInRounds.join(', ')}
  6622. </div>
  6623. )}
  6624. </div>
  6625. )}
  6626. {/* 标签 */}
  6627. {(data.matchLevel || data.score) && (
  6628. <div style={{ display: 'flex', gap: '12px', marginBottom: '16px', flexWrap: 'wrap' }}>
  6629. {data.matchLevel && (
  6630. <span style={{
  6631. display: 'inline-block',
  6632. padding: '4px 16px',
  6633. borderRadius: '24px',
  6634. background: '#fff1f2',
  6635. color: '#be123c',
  6636. fontSize: '20px',
  6637. fontWeight: '500',
  6638. }}>
  6639. {data.matchLevel}
  6640. </span>
  6641. )}
  6642. {/* Score标签已隐藏 - V2不再需要 */}
  6643. </div>
  6644. )}
  6645. {/* 描述 */}
  6646. {expanded && data.description && (
  6647. <div style={{
  6648. fontSize: '22px',
  6649. color: '#9f1239',
  6650. lineHeight: '1.5',
  6651. paddingTop: '16px',
  6652. borderTop: '2px solid #fbcfe8',
  6653. }}>
  6654. {data.description}
  6655. </div>
  6656. )}
  6657. {/* 评估理由 */}
  6658. {expanded && data.evaluationReason && (
  6659. <div style={{
  6660. fontSize: '20px',
  6661. color: '#831843',
  6662. lineHeight: '1.5',
  6663. paddingTop: '16px',
  6664. marginTop: '16px',
  6665. borderTop: '2px solid #fbcfe8',
  6666. }}>
  6667. <strong style={{ color: '#9f1239' }}>评估:</strong>
  6668. <div style={{ marginTop: '4px' }}>{data.evaluationReason}</div>
  6669. </div>
  6670. )}
  6671. </div>
  6672. <Handle
  6673. type="source"
  6674. position={sourcePosition || Position.Right}
  6675. style={{ background: '#ec4899', width: 8, height: 8 }}
  6676. />
  6677. </div>
  6678. );
  6679. }
  6680. // AnalysisNode 组件:展示AI分析(左侧OCR文字,右侧缩略图+描述)
  6681. function AnalysisNode({ data }) {
  6682. const nodeStyle = {
  6683. background: '#fffbeb',
  6684. border: '2px solid #fbbf24',
  6685. borderRadius: '8px',
  6686. padding: '12px',
  6687. minWidth: '700px',
  6688. maxWidth: '900px',
  6689. fontSize: '12px',
  6690. boxShadow: '0 4px 6px rgba(0,0,0,0.1)',
  6691. cursor: 'pointer',
  6692. };
  6693. const handleCardClick = (e) => {
  6694. // 如果点击的是链接或按钮(或其子元素),不处理(避免双重触发)
  6695. if (e.target.closest('a') || e.target.closest('button')) {
  6696. return;
  6697. }
  6698. // 打开原帖链接
  6699. if (data.note_url) {
  6700. window.open(data.note_url, '_blank', 'noopener,noreferrer');
  6701. }
  6702. };
  6703. return (
  6704. <div style={nodeStyle} onClick={handleCardClick}>
  6705. <Handle
  6706. type="target"
  6707. position={Position.Left}
  6708. style={{ background: '#fbbf24', width: 8, height: 8 }}
  6709. />
  6710. {/* 标题 */}
  6711. <div style={{
  6712. fontSize: '14px',
  6713. fontWeight: 'bold',
  6714. marginBottom: '8px',
  6715. color: '#92400e',
  6716. }}>
  6717. 🖼️ {data.query}
  6718. </div>
  6719. {/* 评分和互动数据 */}
  6720. <div style={{
  6721. display: 'flex',
  6722. justifyContent: 'space-between',
  6723. marginBottom: '8px',
  6724. padding: '6px',
  6725. background: '#fef3c7',
  6726. borderRadius: '4px',
  6727. }}>
  6728. <div style={{ fontSize: '11px', fontWeight: 'bold' }}>
  6729. Score: {data.interact_info?.relevance_score || 0}
  6730. </div>
  6731. <div style={{ display: 'flex', gap: '12px', fontSize: '11px' }}>
  6732. {data.interact_info?.liked_count > 0 && (
  6733. <span>❤️ {data.interact_info.liked_count}</span>
  6734. )}
  6735. {data.interact_info?.collected_count > 0 && (
  6736. <span>⭐ {data.interact_info.collected_count}</span>
  6737. )}
  6738. {data.interact_info?.comment_count > 0 && (
  6739. <span>💬 {data.interact_info.comment_count}</span>
  6740. )}
  6741. </div>
  6742. </div>
  6743. {/* 完整正文内容 */}
  6744. {data.body_text && (
  6745. <div style={{
  6746. padding: '8px',
  6747. background: 'white',
  6748. borderRadius: '4px',
  6749. marginBottom: '12px',
  6750. fontSize: '11px',
  6751. lineHeight: '1.5',
  6752. border: '1px solid #fbbf24',
  6753. whiteSpace: 'pre-wrap',
  6754. wordBreak: 'break-word',
  6755. }}>
  6756. {data.body_text}
  6757. </div>
  6758. )}
  6759. {/* AI分析 - 左右分栏 */}
  6760. {data.extraction && data.extraction.images && (
  6761. <div style={{
  6762. display: 'flex',
  6763. flexDirection: 'column',
  6764. gap: '12px',
  6765. }}>
  6766. {data.extraction.images.map((img, idx) => (
  6767. <div
  6768. key={idx}
  6769. style={{
  6770. display: 'flex',
  6771. flexDirection: 'row',
  6772. gap: '16px',
  6773. padding: '10px',
  6774. background: 'white',
  6775. borderRadius: '4px',
  6776. border: '1px solid #d97706',
  6777. alignItems: 'flex-start',
  6778. }}
  6779. >
  6780. {/* 左侧:OCR提取文字 */}
  6781. <div style={{
  6782. flex: '1', // 1/3宽度
  6783. minWidth: '0',
  6784. }}>
  6785. <div style={{
  6786. fontSize: '11px',
  6787. fontWeight: 'bold',
  6788. color: '#92400e',
  6789. marginBottom: '6px',
  6790. }}>
  6791. 📝 图片 {idx + 1}/{data.extraction.images.length}
  6792. </div>
  6793. {img.extract_text && (
  6794. <div style={{
  6795. fontSize: '11px',
  6796. color: '#1f2937',
  6797. lineHeight: '1.6',
  6798. padding: '8px',
  6799. background: '#fef9e7',
  6800. borderRadius: '3px',
  6801. borderLeft: '3px solid #f39c12',
  6802. wordBreak: 'break-word',
  6803. }}>
  6804. <div style={{
  6805. fontSize: '10px',
  6806. fontWeight: 'bold',
  6807. color: '#d97706',
  6808. marginBottom: '4px',
  6809. }}>
  6810. 【提取文字】
  6811. </div>
  6812. {img.extract_text}
  6813. </div>
  6814. )}
  6815. </div>
  6816. {/* 右侧:缩略图 + 描述 */}
  6817. <div style={{
  6818. flex: '2', // 2/3宽度
  6819. display: 'flex',
  6820. flexDirection: 'column',
  6821. gap: '8px',
  6822. minWidth: '200px',
  6823. }}>
  6824. {/* 缩略图 */}
  6825. {data.image_list && data.image_list[idx] && (
  6826. <img
  6827. src={(data.image_list[idx].image_url || data.image_list[idx])}
  6828. alt={'图片' + (idx + 1)}
  6829. style={{
  6830. width: '100%',
  6831. height: 'auto',
  6832. maxHeight: '180px',
  6833. objectFit: 'contain',
  6834. borderRadius: '4px',
  6835. border: '1px solid #d97706',
  6836. cursor: 'pointer',
  6837. }}
  6838. onError={(e) => {
  6839. e.target.style.display = 'none';
  6840. }}
  6841. />
  6842. )}
  6843. {/* 描述文字(完整展示) */}
  6844. {img.description && (
  6845. <div
  6846. style={{
  6847. fontSize: '10px',
  6848. color: '#78350f',
  6849. lineHeight: '1.5',
  6850. wordBreak: 'break-word',
  6851. padding: '8px',
  6852. background: '#fef9e7',
  6853. borderRadius: '3px',
  6854. border: '1px solid #f39c12',
  6855. }}
  6856. >
  6857. <div style={{
  6858. fontSize: '9px',
  6859. fontWeight: 'bold',
  6860. color: '#d97706',
  6861. marginBottom: '4px',
  6862. }}>
  6863. 【图片描述】
  6864. </div>
  6865. {img.description}
  6866. </div>
  6867. )}
  6868. </div>
  6869. </div>
  6870. ))}
  6871. </div>
  6872. )}
  6873. {/* 查看原帖链接 */}
  6874. {data.note_url && (
  6875. <div style={{ marginTop: '8px', fontSize: '10px' }}>
  6876. <a
  6877. href={data.note_url}
  6878. target="_blank"
  6879. rel="noopener noreferrer"
  6880. style={{ color: '#92400e', textDecoration: 'underline' }}
  6881. >
  6882. 🔗 查看原帖
  6883. </a>
  6884. </div>
  6885. )}
  6886. <Handle
  6887. type="source"
  6888. position={Position.Right}
  6889. style={{ background: '#fbbf24', width: 8, height: 8 }}
  6890. />
  6891. </div>
  6892. );
  6893. }
  6894. const nodeTypes = {
  6895. query: QueryNode,
  6896. note: NoteNode,
  6897. post: NoteNode, // 帖子节点使用 NoteNode 组件渲染
  6898. analysis: AnalysisNode,
  6899. };
  6900. // 根据 score 获取颜色
  6901. function getScoreColor(score) {
  6902. if (score >= 0.7) return '#10b981'; // 绿色 - 高分
  6903. if (score >= 0.4) return '#f59e0b'; // 橙色 - 中分
  6904. return '#ef4444'; // 红色 - 低分
  6905. }
  6906. // 截断文本,保留头尾,中间显示省略号
  6907. function truncateMiddle(text, maxLength = 20) {
  6908. if (!text || text.length <= maxLength) return text;
  6909. const headLength = Math.ceil(maxLength * 0.4);
  6910. const tailLength = Math.floor(maxLength * 0.4);
  6911. const head = text.substring(0, headLength);
  6912. const tail = text.substring(text.length - tailLength);
  6913. return `${head}...${tail}`;
  6914. }
  6915. // 根据策略获取颜色
  6916. // 智能提取主要策略的辅助函数
  6917. function getPrimaryStrategy(nodeData) {
  6918. // 优先级1: 使用 primaryStrategy 字段
  6919. if (nodeData.primaryStrategy) {
  6920. return nodeData.primaryStrategy;
  6921. }
  6922. // 优先级2: 从 occurrences 数组中获取最新的策略
  6923. if (nodeData.occurrences && Array.isArray(nodeData.occurrences) && nodeData.occurrences.length > 0) {
  6924. const latestOccurrence = nodeData.occurrences[nodeData.occurrences.length - 1];
  6925. if (latestOccurrence && latestOccurrence.strategy) {
  6926. return latestOccurrence.strategy;
  6927. }
  6928. }
  6929. // 优先级3: 拆分组合策略字符串,取第一个
  6930. if (nodeData.strategy && typeof nodeData.strategy === 'string') {
  6931. const strategies = nodeData.strategy.split(' + ');
  6932. if (strategies.length > 0 && strategies[0]) {
  6933. return strategies[0].trim();
  6934. }
  6935. }
  6936. // 默认返回原始strategy或未知
  6937. return nodeData.strategy || '未知';
  6938. }
  6939. function getStrategyColor(strategy) {
  6940. const strategyColors = {
  6941. '初始分词': '#10b981',
  6942. '调用sug': '#06b6d4',
  6943. '同义改写': '#f59e0b',
  6944. '加词': '#3b82f6',
  6945. '抽象改写': '#8b5cf6',
  6946. '基于部分匹配改进': '#ec4899',
  6947. '结果分支-抽象改写': '#a855f7',
  6948. '结果分支-同义改写': '#fb923c',
  6949. // v6.1.2.8 新增策略
  6950. '原始问题': '#6b21a8',
  6951. '来自分词': '#10b981',
  6952. '加词生成': '#ef4444',
  6953. '建议词': '#06b6d4',
  6954. '执行搜索': '#8b5cf6',
  6955. // 添加简化版本的策略映射
  6956. '分词': '#10b981',
  6957. '推荐词': '#06b6d4',
  6958. };
  6959. return strategyColors[strategy] || '#9ca3af';
  6960. }
  6961. // 树节点组件
  6962. function TreeNode({ node, level, children, isCollapsed, onToggle, isSelected, onSelect }) {
  6963. const hasChildren = children && children.length > 0;
  6964. const score = node.data.score ? parseFloat(node.data.score) : 0;
  6965. const strategy = getPrimaryStrategy(node.data); // 使用智能提取函数
  6966. const strategyColor = getStrategyColor(strategy);
  6967. const nodeActualType = node.data.nodeType || node.type; // 获取实际节点类型
  6968. const isDomainCombination = nodeActualType === 'domain_combination';
  6969. let sourceSummary = '';
  6970. if (isDomainCombination && Array.isArray(node.data.source_word_details) && node.data.source_word_details.length > 0) {
  6971. const summaryParts = [];
  6972. node.data.source_word_details.forEach((detail) => {
  6973. const words = Array.isArray(detail.words) ? detail.words : [];
  6974. const wordTexts = [];
  6975. words.forEach((w) => {
  6976. const numericScore = typeof w.score === 'number' ? w.score : parseFloat(w.score || '0');
  6977. const formattedScore = Number.isFinite(numericScore) ? numericScore.toFixed(2) : '0.00';
  6978. wordTexts.push(w.text + ' (' + formattedScore + ')');
  6979. });
  6980. if (wordTexts.length > 0) {
  6981. const segmentLabel = detail.segment_type ? '[' + detail.segment_type + '] ' : '';
  6982. summaryParts.push(segmentLabel + wordTexts.join(' + '));
  6983. }
  6984. });
  6985. sourceSummary = summaryParts.join(' | ');
  6986. }
  6987. // 计算字体颜色:根据分数提升幅度判断
  6988. let fontColor = '#374151'; // 默认颜色
  6989. if (node.type === 'note') {
  6990. const evaluatorVersion = node.data.evaluator_version || '';
  6991. if (evaluatorVersion === 'v3.0') {
  6992. // V3评估:基于is_knowledge, is_content_knowledge和final_score判断颜色
  6993. const isKnowledge = node.data.is_knowledge;
  6994. const isContentKnowledge = node.data.is_content_knowledge;
  6995. const finalScore = node.data.final_score;
  6996. if (!isKnowledge || !isContentKnowledge) {
  6997. fontColor = '#ef4444'; // 红色 - 非知识或非内容知识
  6998. } else if (finalScore !== null && finalScore !== undefined) {
  6999. if (finalScore >= 60) {
  7000. fontColor = '#22c55e'; // 绿色 - 内容知识且高分
  7001. } else {
  7002. fontColor = '#eab308'; // 黄色 - 内容知识但分数偏低
  7003. }
  7004. }
  7005. } else {
  7006. // V2评估:基于知识得分和相关性得分判断颜色
  7007. const knowledgeScore = node.data.knowledge_score;
  7008. const relevanceScore = node.data.post_relevance_score;
  7009. if (knowledgeScore != null && relevanceScore != null) {
  7010. if (knowledgeScore <= 40) {
  7011. fontColor = '#ef4444'; // 红色 - 知识得分低
  7012. } else if (knowledgeScore > 40 && relevanceScore > 40) {
  7013. fontColor = '#22c55e'; // 绿色 - 知识和相关性都高
  7014. } else {
  7015. fontColor = '#eab308'; // 黄色 - 知识得分高但相关性低
  7016. }
  7017. } else {
  7018. // V1兼容:如果没有V2评估数据,使用matchLevel判断
  7019. fontColor = node.data.matchLevel === 'unsatisfied' ? '#ef4444' : '#374151';
  7020. }
  7021. }
  7022. } else if (node.data.seed_score !== undefined) {
  7023. const parentScore = parseFloat(node.data.seed_score);
  7024. const gain = score - parentScore;
  7025. fontColor = gain >= 0.05 ? '#16a34a' : '#ef4444';
  7026. } else if (node.data.isSelected === false) {
  7027. fontColor = '#ef4444';
  7028. }
  7029. return (
  7030. <div style={{ marginLeft: level * 12 + 'px', marginBottom: '8px' }}>
  7031. <div
  7032. style={{
  7033. padding: '6px 8px',
  7034. borderRadius: '4px',
  7035. cursor: 'pointer',
  7036. background: 'transparent',
  7037. border: isSelected ? '1px solid #3b82f6' : '1px solid transparent',
  7038. display: 'flex',
  7039. alignItems: 'center',
  7040. gap: '6px',
  7041. transition: 'all 0.2s ease',
  7042. position: 'relative',
  7043. overflow: 'visible',
  7044. }}
  7045. onMouseEnter={(e) => {
  7046. if (!isSelected) e.currentTarget.style.background = '#f9fafb';
  7047. }}
  7048. onMouseLeave={(e) => {
  7049. if (!isSelected) e.currentTarget.style.background = 'transparent';
  7050. }}
  7051. >
  7052. {/* 策略类型竖线 */}
  7053. <div style={{
  7054. width: '3px',
  7055. height: '20px',
  7056. background: strategyColor,
  7057. borderRadius: '2px',
  7058. flexShrink: 0,
  7059. position: 'relative',
  7060. zIndex: 1,
  7061. }} />
  7062. {hasChildren && (
  7063. <span
  7064. style={{
  7065. fontSize: '10px',
  7066. color: '#6b7280',
  7067. cursor: 'pointer',
  7068. width: '16px',
  7069. textAlign: 'center',
  7070. position: 'relative',
  7071. zIndex: 1,
  7072. }}
  7073. onClick={(e) => {
  7074. e.stopPropagation();
  7075. onToggle();
  7076. }}
  7077. >
  7078. {isCollapsed ? '▶' : '▼'}
  7079. </span>
  7080. )}
  7081. {!hasChildren && <span style={{ width: '16px', position: 'relative', zIndex: 1 }}></span>}
  7082. <div
  7083. style={{
  7084. flex: 1,
  7085. fontSize: '12px',
  7086. color: '#374151',
  7087. position: 'relative',
  7088. zIndex: 1,
  7089. minWidth: 0,
  7090. display: 'flex',
  7091. flexDirection: 'column',
  7092. gap: '4px',
  7093. }}
  7094. onClick={onSelect}
  7095. >
  7096. <div style={{
  7097. display: 'flex',
  7098. alignItems: 'center',
  7099. gap: '8px',
  7100. }}>
  7101. {/* 文本标题 - 左侧 */}
  7102. <div style={{
  7103. fontWeight: level === 0 ? '600' : '400',
  7104. flex: 1,
  7105. minWidth: 0,
  7106. color: node.data.scoreColor || fontColor,
  7107. overflow: 'hidden',
  7108. textOverflow: 'ellipsis',
  7109. whiteSpace: 'nowrap',
  7110. }}
  7111. title={node.data.title || node.id}
  7112. >
  7113. {node.data.title || node.id}
  7114. </div>
  7115. {/* 域标识 - 右侧,挨着分数,优先显示域类型,否则显示域索引或域字符串,但domain_combination节点不显示 */}
  7116. {(node.data.domain_type || node.data.domains_str || (node.data.domain_index !== null && node.data.domain_index !== undefined)) && nodeActualType !== 'domain_combination' && (
  7117. <span style={{
  7118. fontSize: '12px',
  7119. color: '#fff',
  7120. background: '#6366f1',
  7121. padding: '2px 5px',
  7122. borderRadius: '3px',
  7123. flexShrink: 0,
  7124. fontWeight: '600',
  7125. marginLeft: '4px',
  7126. }}
  7127. title={
  7128. node.data.domain_type ? '域: ' + node.data.domain_type + ' (D' + node.data.domain_index + ')' :
  7129. node.data.domains_str ? '域: ' + node.data.domains_str :
  7130. '域 D' + node.data.domain_index
  7131. }
  7132. >
  7133. {node.data.domain_type || node.data.domains_str || ('D' + node.data.domain_index)}
  7134. </span>
  7135. )}
  7136. {node.data.is_suggestion && node.data.suggestion_label && (
  7137. <span style={{
  7138. fontSize: '12px',
  7139. color: '#fff',
  7140. background: '#8b5cf6',
  7141. padding: '2px 5px',
  7142. borderRadius: '3px',
  7143. flexShrink: 0,
  7144. fontWeight: '600',
  7145. }}
  7146. >
  7147. {node.data.suggestion_label}
  7148. </span>
  7149. )}
  7150. {/* 类型标签 - 显示在右侧靠近分数,蓝色背景 */}
  7151. {node.data.type_label && (
  7152. <span style={{
  7153. fontSize: '12px',
  7154. color: '#fff',
  7155. background: '#6366f1',
  7156. padding: '2px 5px',
  7157. borderRadius: '3px',
  7158. flexShrink: 0,
  7159. fontWeight: '600',
  7160. }}
  7161. title={'类型: ' + node.data.type_label}
  7162. >
  7163. {node.data.type_label}
  7164. </span>
  7165. )}
  7166. {/* 分数显示 - 步骤和轮次节点不显示分数 */}
  7167. {nodeActualType !== 'step' && nodeActualType !== 'round' && (
  7168. <span style={{
  7169. fontSize: '11px',
  7170. color: '#6b7280',
  7171. fontWeight: '500',
  7172. flexShrink: 0,
  7173. minWidth: '35px',
  7174. textAlign: 'right',
  7175. }}>
  7176. {node.type === 'note' && node.data.evaluator_version === 'v3.0' && node.data.final_score !== null && node.data.final_score !== undefined
  7177. ? node.data.final_score.toFixed(1)
  7178. : score.toFixed(2)}
  7179. </span>
  7180. )}
  7181. </div>
  7182. {/* V3评估信息行 - 仅对note类型且有V3评估数据显示 */}
  7183. {node.type === 'note' && node.data.evaluator_version === 'v3.0' && (
  7184. <div style={{ fontSize: '10px', color: '#2563eb', marginTop: '2px', display: 'flex', flexWrap: 'wrap', gap: '6px' }}>
  7185. <span style={{ fontWeight: '600', color: '#2563eb' }}>评估结论:</span>
  7186. <span style={{ color: node.data.is_knowledge ? '#16a34a' : '#dc2626', fontWeight: '500' }}>
  7187. {node.data.is_knowledge ? '✓ 是知识' : '✗ 非知识'}
  7188. </span>
  7189. {node.data.is_content_knowledge !== null && node.data.is_content_knowledge !== undefined && (
  7190. <span style={{ color: node.data.is_content_knowledge ? '#16a34a' : '#dc2626', fontWeight: '500' }}>
  7191. | {node.data.is_content_knowledge ? '✓ 是内容知识' : '✗ 非内容知识'}
  7192. </span>
  7193. )}
  7194. {node.data.is_content_knowledge && node.data.final_score !== null && node.data.final_score !== undefined && (
  7195. <>
  7196. <span style={{ fontWeight: '500', color: '#2563eb' }}>| {node.data.match_level}</span>
  7197. <span style={{ fontWeight: '600', color: node.data.final_score >= 60 ? '#16a34a' : '#ea580c' }}>
  7198. | {node.data.final_score.toFixed(1)}分
  7199. </span>
  7200. </>
  7201. )}
  7202. </div>
  7203. )}
  7204. {/* 域组合的来源词得分(树状视图,右对齐) */}
  7205. {isDomainCombination && sourceSummary && (
  7206. <div style={{
  7207. fontSize: '10px',
  7208. color: '#2563eb',
  7209. lineHeight: '1.4',
  7210. display: 'flex',
  7211. flexDirection: 'column',
  7212. alignItems: 'flex-end',
  7213. gap: '2px',
  7214. textAlign: 'right',
  7215. }}>
  7216. {node.data.source_word_details.map((detail, idx) => {
  7217. const words = Array.isArray(detail.words) ? detail.words : [];
  7218. const summary = words.map((w) => {
  7219. const numericScore = typeof w.score === 'number' ? w.score : parseFloat(w.score || '0');
  7220. const formattedScore = Number.isFinite(numericScore) ? numericScore.toFixed(2) : '0.00';
  7221. return w.text + ' (' + formattedScore + ')';
  7222. }).join(' + ');
  7223. return (
  7224. <span key={idx} title={summary}>
  7225. {summary}
  7226. </span>
  7227. );
  7228. })}
  7229. </div>
  7230. )}
  7231. {/* 分数下划线 - 步骤和轮次节点不显示 */}
  7232. {nodeActualType !== 'step' && nodeActualType !== 'round' && (
  7233. <div style={{
  7234. width: (score * 100) + '%',
  7235. height: '2px',
  7236. background: getScoreColor(score),
  7237. borderRadius: '1px',
  7238. }} />
  7239. )}
  7240. </div>
  7241. </div>
  7242. {hasChildren && !isCollapsed && (
  7243. <div>
  7244. {children}
  7245. </div>
  7246. )}
  7247. </div>
  7248. );
  7249. }
  7250. // 使用 dagre 自动布局
  7251. function getLayoutedElements(nodes, edges, direction = 'LR') {
  7252. console.log('🎯 Starting layout with dagre...');
  7253. console.log('Input:', nodes.length, 'nodes,', edges.length, 'edges');
  7254. // 检查 dagre 是否加载
  7255. if (typeof window === 'undefined' || typeof window.dagre === 'undefined') {
  7256. console.warn('⚠️ Dagre not loaded, using fallback layout');
  7257. // 降级到简单布局
  7258. const levelGroups = {};
  7259. nodes.forEach(node => {
  7260. const level = node.data.level || 0;
  7261. if (!levelGroups[level]) levelGroups[level] = [];
  7262. levelGroups[level].push(node);
  7263. });
  7264. Object.entries(levelGroups).forEach(([level, nodeList]) => {
  7265. const x = parseInt(level) * 480;
  7266. nodeList.forEach((node, index) => {
  7267. node.position = { x, y: index * 260 };
  7268. node.targetPosition = 'left';
  7269. node.sourcePosition = 'right';
  7270. });
  7271. });
  7272. return { nodes, edges };
  7273. }
  7274. try {
  7275. const dagreGraph = new window.dagre.graphlib.Graph();
  7276. dagreGraph.setDefaultEdgeLabel(() => ({}));
  7277. const isHorizontal = direction === 'LR';
  7278. dagreGraph.setGraph({
  7279. rankdir: direction,
  7280. nodesep: 800, // 垂直间距 - 增加以适应更高的note节点(卡片高度2600px + 800px间距)
  7281. ranksep: 400, // 水平间距 - 增加以容纳更宽的节点
  7282. });
  7283. // 添加节点 - 根据节点类型设置不同的尺寸
  7284. nodes.forEach((node) => {
  7285. let nodeWidth = 320;
  7286. let nodeHeight = 220;
  7287. // note 节点有轮播图,需要更大的空间
  7288. if (node.type === 'note') {
  7289. nodeWidth = 360;
  7290. nodeHeight = 2600; // 更新以适应完整内容:1:1图片(880px) + 标题/原始问题/评估(500px) + 正文/AI提取(最多1200px)
  7291. }
  7292. // analysis 节点内容很多,需要更大的空间
  7293. else if (node.type === 'analysis') {
  7294. nodeWidth = 900; // 宽度足够容纳左右分栏
  7295. nodeHeight = 600; // 高度足够容纳多张图片
  7296. }
  7297. dagreGraph.setNode(node.id, { width: nodeWidth, height: nodeHeight });
  7298. });
  7299. // 添加边
  7300. edges.forEach((edge) => {
  7301. dagreGraph.setEdge(edge.source, edge.target);
  7302. });
  7303. // 计算布局
  7304. window.dagre.layout(dagreGraph);
  7305. console.log('✅ Dagre layout completed');
  7306. // 更新节点位置和 handle 位置
  7307. nodes.forEach((node) => {
  7308. const nodeWithPosition = dagreGraph.node(node.id);
  7309. if (!nodeWithPosition) {
  7310. console.warn('Node position not found for:', node.id);
  7311. return;
  7312. }
  7313. node.targetPosition = isHorizontal ? 'left' : 'top';
  7314. node.sourcePosition = isHorizontal ? 'right' : 'bottom';
  7315. // 根据节点类型获取尺寸
  7316. let nodeWidth = 320;
  7317. let nodeHeight = 220;
  7318. if (node.type === 'note') {
  7319. nodeWidth = 360;
  7320. nodeHeight = 2600; // 与dagre布局参数保持一致
  7321. }
  7322. // 将 dagre 的中心点位置转换为 React Flow 的左上角位置
  7323. node.position = {
  7324. x: nodeWithPosition.x - nodeWidth / 2,
  7325. y: nodeWithPosition.y - nodeHeight / 2,
  7326. };
  7327. });
  7328. // 为同层级的 note 节点添加交错偏移,避免视觉重叠
  7329. console.log('=== 开始交错偏移逻辑 ===');
  7330. console.log('总节点数:', nodes.length);
  7331. const noteNodes = nodes.filter(n => n.type === 'note');
  7332. console.log('过滤后的 note 节点数:', noteNodes.length);
  7333. if (noteNodes.length > 1) {
  7334. // 输出排序前的位置
  7335. console.log('排序前的 note 节点位置:');
  7336. noteNodes.forEach((n, i) => {
  7337. console.log(' [' + i + '] ' + n.id.substring(0, 40) + '... | type=' + n.type + ' | pos=(' + n.position.x.toFixed(0) + ', ' + n.position.y.toFixed(0) + ')');
  7338. });
  7339. // 按 Y 坐标排序
  7340. noteNodes.sort((a, b) => a.position.y - b.position.y);
  7341. console.log('排序后的 note 节点位置:');
  7342. noteNodes.forEach((n, i) => {
  7343. console.log(' [' + i + '] ' + n.id.substring(0, 40) + '... | pos=(' + n.position.x.toFixed(0) + ', ' + n.position.y.toFixed(0) + ')');
  7344. });
  7345. // 为相邻的 note 节点添加 X 方向的交错(3个位置:左、中、右)
  7346. const baseX = noteNodes.length > 0 ? noteNodes[0].position.x : 0;
  7347. const leftX = baseX - 1500;
  7348. const centerX = baseX;
  7349. const rightX = baseX + 1500;
  7350. let appliedCount = 0;
  7351. noteNodes.forEach((node, index) => {
  7352. const oldX = node.position.x;
  7353. const position = index % 3;
  7354. if (position === 0) {
  7355. node.position.x = leftX;
  7356. console.log(' [' + index + '] 设置为左侧: X ' + oldX.toFixed(0) + ' → ' + node.position.x.toFixed(0));
  7357. } else if (position === 1) {
  7358. node.position.x = centerX;
  7359. console.log(' [' + index + '] 设置为中间: X ' + oldX.toFixed(0) + ' → ' + node.position.x.toFixed(0));
  7360. } else {
  7361. node.position.x = rightX;
  7362. console.log(' [' + index + '] 设置为右侧: X ' + oldX.toFixed(0) + ' → ' + node.position.x.toFixed(0));
  7363. }
  7364. appliedCount++;
  7365. });
  7366. console.log('总共应用了 ' + appliedCount + ' 次偏移');
  7367. } else {
  7368. console.log('note 节点数量 <= 1,不需要交错');
  7369. }
  7370. console.log('=== 交错偏移逻辑结束 ===');
  7371. console.log('✅ Layout completed, sample node:', nodes[0]);
  7372. return { nodes, edges };
  7373. } catch (error) {
  7374. console.error('❌ Error in dagre layout:', error);
  7375. console.error('Error details:', error.message, error.stack);
  7376. // 降级处理
  7377. console.log('Using fallback layout...');
  7378. const levelGroups = {};
  7379. nodes.forEach(node => {
  7380. const level = node.data.level || 0;
  7381. if (!levelGroups[level]) levelGroups[level] = [];
  7382. levelGroups[level].push(node);
  7383. });
  7384. Object.entries(levelGroups).forEach(([level, nodeList]) => {
  7385. const x = parseInt(level) * 480;
  7386. nodeList.forEach((node, index) => {
  7387. node.position = { x, y: index * 260 };
  7388. node.targetPosition = 'left';
  7389. node.sourcePosition = 'right';
  7390. });
  7391. });
  7392. return { nodes, edges };
  7393. }
  7394. }
  7395. function transformData(data) {
  7396. const nodes = [];
  7397. const edges = [];
  7398. const originalIdToCanvasId = {}; // 原始ID -> 画布ID的映射
  7399. const canvasIdToNodeData = {}; // 避免重复创建相同的节点
  7400. let analysisNodeCount = 0; // 用于给analysis节点添加X偏移
  7401. // 🆕 获取原始问题(从root节点)
  7402. const originalQuestion = data.nodes['root_o']?.query || '';
  7403. // 创建节点
  7404. Object.entries(data.nodes).forEach(([originalId, node]) => {
  7405. // 统一处理所有类型的节点
  7406. const nodeType = node.type || 'query';
  7407. // 直接使用originalId作为canvasId,避免冲突
  7408. const canvasId = originalId;
  7409. originalIdToCanvasId[originalId] = canvasId;
  7410. // 如果这个 canvasId 还没有创建过节点,则创建
  7411. if (!canvasIdToNodeData[canvasId]) {
  7412. canvasIdToNodeData[canvasId] = true;
  7413. // 根据节点类型创建不同的数据结构
  7414. if (nodeType === 'note' || nodeType === 'post') {
  7415. nodes.push({
  7416. id: canvasId,
  7417. originalId: originalId,
  7418. type: 'note',
  7419. data: {
  7420. title: node.query || node.title || '帖子',
  7421. matchLevel: node.match_level,
  7422. score: node.relevance_score ? node.relevance_score.toFixed(2) : '0.00',
  7423. description: node.body_text || node.desc || '',
  7424. isSelected: node.is_selected !== undefined ? node.is_selected : true,
  7425. imageList: node.image_list || [],
  7426. note_url: node.note_url || '',
  7427. evaluationReason: node.evaluationReason || node.evaluation_reason || '',
  7428. interact_info: node.interact_info || {},
  7429. nodeType: nodeType,
  7430. // 🆕 评估字段 (V2)
  7431. // 知识评估
  7432. is_knowledge: node.is_knowledge !== undefined ? node.is_knowledge : null,
  7433. knowledge_reason: node.knowledge_reason || '',
  7434. knowledge_score: node.knowledge_score !== undefined ? node.knowledge_score : null,
  7435. knowledge_level: node.knowledge_level !== undefined ? node.knowledge_level : null,
  7436. knowledge_evaluation: node.knowledge_evaluation || null,
  7437. // 相关性评估
  7438. post_relevance_score: node.post_relevance_score !== undefined ? node.post_relevance_score : null,
  7439. relevance_level: node.relevance_level || '',
  7440. relevance_reason: node.relevance_reason || '',
  7441. relevance_conclusion: node.relevance_conclusion || '',
  7442. relevance_evaluation: node.relevance_evaluation || null,
  7443. // 🆕 评估字段 (V3)
  7444. is_content_knowledge: node.is_content_knowledge !== undefined ? node.is_content_knowledge : null,
  7445. purpose_score: node.purpose_score !== undefined ? node.purpose_score : null,
  7446. category_score: node.category_score !== undefined ? node.category_score : null,
  7447. final_score: node.final_score !== undefined ? node.final_score : null,
  7448. match_level: node.match_level || '',
  7449. evaluator_version: node.evaluator_version || '',
  7450. content_knowledge_evaluation: node.content_knowledge_evaluation || null,
  7451. purpose_evaluation: node.purpose_evaluation || null,
  7452. category_evaluation: node.category_evaluation || null,
  7453. // 🆕 原始问题
  7454. originalQuestion: originalQuestion
  7455. },
  7456. position: { x: 0, y: 0 },
  7457. });
  7458. } else if (nodeType === 'analysis') {
  7459. // AI分析节点 - 添加X偏移避免叠加
  7460. const xOffset = analysisNodeCount * 150; // 每个节点偏移150px
  7461. analysisNodeCount++;
  7462. nodes.push({
  7463. id: canvasId,
  7464. originalId: originalId,
  7465. type: 'analysis',
  7466. data: {
  7467. query: node.query || '[AI分析]',
  7468. note_id: node.note_id,
  7469. note_url: node.note_url,
  7470. title: node.title || '',
  7471. body_text: node.body_text || '',
  7472. interact_info: node.interact_info || {},
  7473. extraction: node.extraction || null,
  7474. image_list: node.image_list || [],
  7475. },
  7476. position: { x: xOffset, y: 0 },
  7477. });
  7478. } else {
  7479. // query, seg, q, search, root 等节点
  7480. let displayTitle = node.query || originalId;
  7481. nodes.push({
  7482. id: canvasId,
  7483. originalId: originalId,
  7484. type: 'query', // 使用 query 组件渲染所有非note节点
  7485. data: {
  7486. title: displayTitle,
  7487. level: node.level || 0,
  7488. score: node.relevance_score ? node.relevance_score.toFixed(2) : '0.00',
  7489. strategy: node.strategy || '',
  7490. parent: node.parent_query || '',
  7491. isSelected: node.is_selected !== undefined ? node.is_selected : true,
  7492. evaluationReason: node.evaluationReason || node.evaluation_reason || '',
  7493. nodeType: nodeType, // 传递实际节点类型用于样式
  7494. searchCount: node.search_count, // search 节点特有
  7495. totalPosts: node.total_posts, // search 节点特有
  7496. selectedWord: node.selected_word || '', // 加词节点特有 - 显示选择的词
  7497. scoreColor: node.scoreColor || null, // SUG节点的颜色标识
  7498. parentQScore: node.parentQScore || 0, // 父Q得分(用于调试)
  7499. domain_index: node.domain_index !== undefined ? node.domain_index : null, // 域索引
  7500. domain_type: node.domain_type || '', // 域类型(如"中心名词"、"核心动作"),只有Q节点有,segment节点不显示
  7501. segment_type: node.segment_type || '', // segment类型(只有segment节点才有)
  7502. type_label: node.type_label || '', // 类型标签
  7503. domains: node.domains || [], // 域索引数组(domain_combination节点特有)
  7504. domains_str: node.domains_str || '', // 域标识字符串(如"D0,D1")
  7505. from_segments: node.from_segments || [], // 来源segments(domain_combination节点特有)
  7506. source_word_details: node.source_word_details || [], // 组合来源词及其得分
  7507. source_scores: node.source_scores || [], // 扁平来源得分
  7508. is_above_sources: node.is_above_sources || false, // 组合是否高于来源得分
  7509. max_source_score: node.max_source_score !== undefined ? node.max_source_score : null, // 来源最高分
  7510. item_type: node.item_type || '', // 构建下一轮节点来源类型
  7511. is_suggestion: node.is_suggestion || false,
  7512. suggestion_label: node.suggestion_label || '',
  7513. },
  7514. position: { x: 0, y: 0 },
  7515. });
  7516. }
  7517. }
  7518. });
  7519. // 创建边 - 使用虚线样式,映射到画布ID
  7520. data.edges.forEach((edge, index) => {
  7521. const edgeColors = {
  7522. '初始分词': '#10b981',
  7523. '调用sug': '#06b6d4',
  7524. '同义改写': '#f59e0b',
  7525. '加词': '#3b82f6',
  7526. '抽象改写': '#8b5cf6',
  7527. '基于部分匹配改进': '#ec4899',
  7528. '结果分支-抽象改写': '#a855f7',
  7529. '结果分支-同义改写': '#fb923c',
  7530. 'query_to_note': '#ec4899',
  7531. };
  7532. const color = edgeColors[edge.strategy] || edgeColors[edge.edge_type] || '#d1d5db';
  7533. const isNoteEdge = edge.edge_type === 'query_to_note';
  7534. edges.push({
  7535. id: `edge-${index}`,
  7536. source: originalIdToCanvasId[edge.from], // 使用画布ID
  7537. target: originalIdToCanvasId[edge.to], // 使用画布ID
  7538. type: 'simplebezier', // 使用简单贝塞尔曲线
  7539. animated: isNoteEdge,
  7540. style: {
  7541. stroke: color,
  7542. strokeWidth: isNoteEdge ? 2.5 : 2,
  7543. strokeDasharray: isNoteEdge ? '5,5' : '8,4',
  7544. },
  7545. markerEnd: {
  7546. type: 'arrowclosed',
  7547. color: color,
  7548. width: 20,
  7549. height: 20,
  7550. },
  7551. });
  7552. });
  7553. // 使用 dagre 自动计算布局 - 从左到右
  7554. return getLayoutedElements(nodes, edges, 'LR');
  7555. }
  7556. function FlowContent() {
  7557. // 画布使用简化数据
  7558. const { nodes: initialNodes, edges: initialEdges } = useMemo(() => {
  7559. console.log('🔍 Transforming data for canvas...');
  7560. const result = transformData(data);
  7561. console.log('✅ Canvas data:', result.nodes.length, 'nodes,', result.edges.length, 'edges');
  7562. return result;
  7563. }, []);
  7564. // 目录使用完整数据(如果存在)
  7565. const { nodes: fullNodes, edges: fullEdges } = useMemo(() => {
  7566. if (data.fullData) {
  7567. console.log('🔍 Transforming full data for tree directory...');
  7568. const result = transformData(data.fullData);
  7569. console.log('✅ Directory data:', result.nodes.length, 'nodes,', result.edges.length, 'edges');
  7570. return result;
  7571. }
  7572. // 如果没有 fullData,使用简化数据
  7573. return { nodes: initialNodes, edges: initialEdges };
  7574. }, [initialNodes, initialEdges]);
  7575. // 初始化:找出所有有子节点的节点,默认折叠(画布节点)
  7576. const initialCollapsedNodes = useMemo(() => {
  7577. const nodesWithChildren = new Set();
  7578. initialEdges.forEach(edge => {
  7579. nodesWithChildren.add(edge.source);
  7580. });
  7581. // 排除根节点(level 0),让根节点默认展开
  7582. const rootNode = initialNodes.find(n => n.data.level === 0);
  7583. if (rootNode) {
  7584. nodesWithChildren.delete(rootNode.id);
  7585. }
  7586. return nodesWithChildren;
  7587. }, [initialNodes, initialEdges]);
  7588. // 树节点的折叠状态需要在树构建后初始化
  7589. const [collapsedNodes, setCollapsedNodes] = useState(() => initialCollapsedNodes);
  7590. const [collapsedTreeNodes, setCollapsedTreeNodes] = useState(new Set());
  7591. const [selectedNodeId, setSelectedNodeId] = useState(null);
  7592. const [hiddenNodes, setHiddenNodes] = useState(new Set()); // 用户手动隐藏的节点
  7593. const [focusMode, setFocusMode] = useState(false); // 全局聚焦模式,默认关闭
  7594. const [focusedNodeId, setFocusedNodeId] = useState(null); // 单独聚焦的节点ID
  7595. const [sidebarWidth, setSidebarWidth] = useState(400); // 左侧目录宽度
  7596. const [isResizing, setIsResizing] = useState(false); // 是否正在拖拽调整宽度
  7597. // 拖拽调整侧边栏宽度的处理逻辑
  7598. const handleMouseDown = useCallback(() => {
  7599. setIsResizing(true);
  7600. }, []);
  7601. useEffect(() => {
  7602. if (!isResizing) return;
  7603. const handleMouseMove = (e) => {
  7604. const newWidth = e.clientX;
  7605. // 限制宽度范围:300px - 700px
  7606. if (newWidth >= 300 && newWidth <= 700) {
  7607. setSidebarWidth(newWidth);
  7608. }
  7609. };
  7610. const handleMouseUp = () => {
  7611. setIsResizing(false);
  7612. };
  7613. document.addEventListener('mousemove', handleMouseMove);
  7614. document.addEventListener('mouseup', handleMouseUp);
  7615. return () => {
  7616. document.removeEventListener('mousemove', handleMouseMove);
  7617. document.removeEventListener('mouseup', handleMouseUp);
  7618. };
  7619. }, [isResizing]);
  7620. // 获取 React Flow 实例以控制画布
  7621. const { setCenter, fitView } = useReactFlow();
  7622. // 获取某个节点的所有后代节点ID
  7623. const getDescendants = useCallback((nodeId) => {
  7624. const descendants = new Set();
  7625. const queue = [nodeId];
  7626. while (queue.length > 0) {
  7627. const current = queue.shift();
  7628. initialEdges.forEach(edge => {
  7629. if (edge.source === current && !descendants.has(edge.target)) {
  7630. descendants.add(edge.target);
  7631. queue.push(edge.target);
  7632. }
  7633. });
  7634. }
  7635. return descendants;
  7636. }, [initialEdges]);
  7637. // 获取直接父节点
  7638. const getDirectParents = useCallback((nodeId) => {
  7639. const parents = [];
  7640. initialEdges.forEach(edge => {
  7641. if (edge.target === nodeId) {
  7642. parents.push(edge.source);
  7643. }
  7644. });
  7645. return parents;
  7646. }, [initialEdges]);
  7647. // 获取直接子节点
  7648. const getDirectChildren = useCallback((nodeId) => {
  7649. const children = [];
  7650. initialEdges.forEach(edge => {
  7651. if (edge.source === nodeId) {
  7652. children.push(edge.target);
  7653. }
  7654. });
  7655. return children;
  7656. }, [initialEdges]);
  7657. // 切换节点折叠状态
  7658. const toggleNodeCollapse = useCallback((nodeId) => {
  7659. setCollapsedNodes(prev => {
  7660. const newSet = new Set(prev);
  7661. const descendants = getDescendants(nodeId);
  7662. if (newSet.has(nodeId)) {
  7663. // 展开:移除此节点,但保持其他折叠的节点
  7664. newSet.delete(nodeId);
  7665. } else {
  7666. // 折叠:添加此节点
  7667. newSet.add(nodeId);
  7668. }
  7669. return newSet;
  7670. });
  7671. }, [getDescendants]);
  7672. // 过滤可见的节点和边,并重新计算布局
  7673. const { nodes, edges } = useMemo(() => {
  7674. const nodesToHide = new Set();
  7675. // 判断使用哪个节点ID进行聚焦:优先使用单独聚焦的节点,否则使用全局聚焦模式的选中节点
  7676. const effectiveFocusNodeId = focusedNodeId || (focusMode ? selectedNodeId : null);
  7677. // 聚焦模式:只显示聚焦节点、其父节点和直接子节点
  7678. if (effectiveFocusNodeId) {
  7679. const visibleInFocus = new Set([effectiveFocusNodeId]);
  7680. // 添加所有父节点
  7681. initialEdges.forEach(edge => {
  7682. if (edge.target === effectiveFocusNodeId) {
  7683. visibleInFocus.add(edge.source);
  7684. }
  7685. });
  7686. // 添加所有直接子节点
  7687. initialEdges.forEach(edge => {
  7688. if (edge.source === effectiveFocusNodeId) {
  7689. visibleInFocus.add(edge.target);
  7690. }
  7691. });
  7692. // 隐藏不在聚焦范围内的节点
  7693. initialNodes.forEach(node => {
  7694. if (!visibleInFocus.has(node.id)) {
  7695. nodesToHide.add(node.id);
  7696. }
  7697. });
  7698. } else {
  7699. // 非聚焦模式:使用原有的折叠逻辑
  7700. // 收集所有被折叠节点的后代
  7701. collapsedNodes.forEach(collapsedId => {
  7702. const descendants = getDescendants(collapsedId);
  7703. descendants.forEach(id => nodesToHide.add(id));
  7704. });
  7705. }
  7706. // 添加用户手动隐藏的节点
  7707. hiddenNodes.forEach(id => nodesToHide.add(id));
  7708. const visibleNodes = initialNodes
  7709. .filter(node => !nodesToHide.has(node.id))
  7710. .map(node => ({
  7711. ...node,
  7712. data: {
  7713. ...node.data,
  7714. isCollapsed: collapsedNodes.has(node.id),
  7715. hasChildren: initialEdges.some(e => e.source === node.id),
  7716. onToggleCollapse: () => toggleNodeCollapse(node.id),
  7717. onHideSelf: () => {
  7718. setHiddenNodes(prev => {
  7719. const newSet = new Set(prev);
  7720. newSet.add(node.id);
  7721. return newSet;
  7722. });
  7723. },
  7724. onFocus: () => {
  7725. // 切换聚焦状态
  7726. if (focusedNodeId === node.id) {
  7727. setFocusedNodeId(null); // 如果已经聚焦,则取消聚焦
  7728. } else {
  7729. // 先取消之前的聚焦,然后聚焦到当前节点
  7730. setFocusedNodeId(node.id);
  7731. // 延迟聚焦视图到该节点
  7732. setTimeout(() => {
  7733. fitView({
  7734. nodes: [{ id: node.id }],
  7735. duration: 800,
  7736. padding: 0.3,
  7737. });
  7738. }, 100);
  7739. }
  7740. },
  7741. isFocused: focusedNodeId === node.id,
  7742. isHighlighted: selectedNodeId === node.id,
  7743. }
  7744. }));
  7745. const visibleEdges = initialEdges.filter(
  7746. edge => !nodesToHide.has(edge.source) && !nodesToHide.has(edge.target)
  7747. );
  7748. // 重新计算布局 - 只对可见节点
  7749. if (typeof window !== 'undefined' && typeof window.dagre !== 'undefined') {
  7750. try {
  7751. const dagreGraph = new window.dagre.graphlib.Graph();
  7752. dagreGraph.setDefaultEdgeLabel(() => ({}));
  7753. dagreGraph.setGraph({
  7754. rankdir: 'LR',
  7755. nodesep: 800, // 与static layout保持一致,确保不重叠
  7756. ranksep: 400, // 增加水平间距
  7757. });
  7758. visibleNodes.forEach((node) => {
  7759. let nodeWidth = 320;
  7760. let nodeHeight = 220;
  7761. // note 节点有轮播图,需要更大的空间
  7762. if (node.type === 'note') {
  7763. nodeWidth = 360;
  7764. nodeHeight = 2600; // 与static layout保持一致
  7765. }
  7766. dagreGraph.setNode(node.id, { width: nodeWidth, height: nodeHeight });
  7767. });
  7768. visibleEdges.forEach((edge) => {
  7769. dagreGraph.setEdge(edge.source, edge.target);
  7770. });
  7771. window.dagre.layout(dagreGraph);
  7772. visibleNodes.forEach((node) => {
  7773. const nodeWithPosition = dagreGraph.node(node.id);
  7774. if (nodeWithPosition) {
  7775. // 根据节点类型获取对应的尺寸
  7776. let nodeWidth = 320;
  7777. let nodeHeight = 220;
  7778. if (node.type === 'note') {
  7779. nodeWidth = 360;
  7780. nodeHeight = 2600; // 与static layout保持一致
  7781. }
  7782. node.position = {
  7783. x: nodeWithPosition.x - nodeWidth / 2,
  7784. y: nodeWithPosition.y - nodeHeight / 2,
  7785. };
  7786. node.targetPosition = 'left';
  7787. node.sourcePosition = 'right';
  7788. }
  7789. });
  7790. // 为同层级的 note 节点添加交错偏移,避免视觉重叠
  7791. console.log('[DYNAMIC LAYOUT] 开始应用交错偏移');
  7792. const noteNodesToStagger = visibleNodes.filter(n => n.type === 'note');
  7793. console.log('[DYNAMIC LAYOUT] note 节点数:', noteNodesToStagger.length);
  7794. if (noteNodesToStagger.length > 1) {
  7795. // 按 Y 坐标排序
  7796. noteNodesToStagger.sort((a, b) => a.position.y - b.position.y);
  7797. console.log('[DYNAMIC LAYOUT] 排序后准备应用偏移:');
  7798. noteNodesToStagger.forEach((n, i) => {
  7799. console.log(' [' + i + '] ' + n.id.substring(0, 40) + '... | pos=(' + n.position.x.toFixed(0) + ', ' + n.position.y.toFixed(0) + ')');
  7800. });
  7801. // 为相邻的 note 节点添加 X 方向的交错(3个位置:左、中、右)
  7802. const baseX = noteNodesToStagger.length > 0 ? noteNodesToStagger[0].position.x : 0;
  7803. const leftX = baseX - 1500;
  7804. const centerX = baseX;
  7805. const rightX = baseX + 1500;
  7806. let appliedCount = 0;
  7807. noteNodesToStagger.forEach((node, index) => {
  7808. const oldX = node.position.x;
  7809. const position = index % 3;
  7810. if (position === 0) {
  7811. node.position.x = leftX;
  7812. console.log('[DYNAMIC LAYOUT] [' + index + '] 设置为左侧: X ' + oldX.toFixed(0) + ' → ' + node.position.x.toFixed(0));
  7813. } else if (position === 1) {
  7814. node.position.x = centerX;
  7815. console.log('[DYNAMIC LAYOUT] [' + index + '] 设置为中间: X ' + oldX.toFixed(0) + ' → ' + node.position.x.toFixed(0));
  7816. } else {
  7817. node.position.x = rightX;
  7818. console.log('[DYNAMIC LAYOUT] [' + index + '] 设置为右侧: X ' + oldX.toFixed(0) + ' → ' + node.position.x.toFixed(0));
  7819. }
  7820. appliedCount++;
  7821. });
  7822. console.log('[DYNAMIC LAYOUT] 总共应用了 ' + appliedCount + ' 次偏移');
  7823. }
  7824. console.log('✅ Dynamic layout recalculated for', visibleNodes.length, 'visible nodes');
  7825. } catch (error) {
  7826. console.error('❌ Error in dynamic layout:', error);
  7827. }
  7828. }
  7829. return { nodes: visibleNodes, edges: visibleEdges };
  7830. }, [initialNodes, initialEdges, collapsedNodes, hiddenNodes, focusMode, focusedNodeId, getDescendants, toggleNodeCollapse, selectedNodeId]);
  7831. // 构建树形结构 - 允许一个节点有多个父节点
  7832. // 为目录构建树(使用完整数据)
  7833. const buildTree = useCallback(() => {
  7834. // 使用完整数据构建目录树
  7835. const nodeMap = new Map();
  7836. fullNodes.forEach(node => {
  7837. nodeMap.set(node.id, node);
  7838. });
  7839. // 为每个节点创建树节点的副本(允许多次出现)
  7840. const createTreeNode = (nodeId, pathKey) => {
  7841. const node = nodeMap.get(nodeId);
  7842. if (!node) return null;
  7843. return {
  7844. ...node,
  7845. treeKey: pathKey, // 唯一的树路径key,用于React key
  7846. children: []
  7847. };
  7848. };
  7849. // 构建父子关系映射:记录每个节点的所有父节点,去重边
  7850. const parentToChildren = new Map();
  7851. const childToParents = new Map();
  7852. fullEdges.forEach(edge => {
  7853. // 记录父->子关系(去重:同一个父节点到同一个子节点只记录一次)
  7854. if (!parentToChildren.has(edge.source)) {
  7855. parentToChildren.set(edge.source, []);
  7856. }
  7857. const children = parentToChildren.get(edge.source);
  7858. if (!children.includes(edge.target)) {
  7859. children.push(edge.target);
  7860. }
  7861. // 记录子->父关系(用于判断是否有多个父节点,也去重)
  7862. if (!childToParents.has(edge.target)) {
  7863. childToParents.set(edge.target, []);
  7864. }
  7865. const parents = childToParents.get(edge.target);
  7866. if (!parents.includes(edge.source)) {
  7867. parents.push(edge.source);
  7868. }
  7869. });
  7870. // 递归构建树
  7871. const buildSubtree = (nodeId, pathKey, visitedInPath) => {
  7872. // 避免循环引用:如果当前路径中已经访问过这个节点,跳过
  7873. if (visitedInPath.has(nodeId)) {
  7874. return null;
  7875. }
  7876. const treeNode = createTreeNode(nodeId, pathKey);
  7877. if (!treeNode) return null;
  7878. const newVisitedInPath = new Set(visitedInPath);
  7879. newVisitedInPath.add(nodeId);
  7880. const children = parentToChildren.get(nodeId) || [];
  7881. treeNode.children = children
  7882. .map((childId, index) => buildSubtree(childId, pathKey + '-' + childId + '-' + index, newVisitedInPath))
  7883. .filter(child => child !== null);
  7884. return treeNode;
  7885. };
  7886. // 找出所有根节点(没有入边的节点)
  7887. const hasParent = new Set();
  7888. fullEdges.forEach(edge => {
  7889. hasParent.add(edge.target);
  7890. });
  7891. const roots = [];
  7892. fullNodes.forEach((node, index) => {
  7893. if (!hasParent.has(node.id)) {
  7894. const treeNode = buildSubtree(node.id, 'root-' + node.id + '-' + index, new Set());
  7895. if (treeNode) roots.push(treeNode);
  7896. }
  7897. });
  7898. return roots;
  7899. }, [fullNodes, fullEdges]);
  7900. const treeRoots = useMemo(() => buildTree(), [buildTree]);
  7901. // 生成树形文本结构(使用完整数据)
  7902. const generateTreeText = useCallback(() => {
  7903. const lines = [];
  7904. // 递归生成树形文本
  7905. const traverse = (nodes, prefix = '', isLast = true, depth = 0) => {
  7906. nodes.forEach((node, index) => {
  7907. const isLastNode = index === nodes.length - 1;
  7908. const nodeData = fullNodes.find(n => n.id === node.id)?.data || {};
  7909. const nodeType = nodeData.nodeType || node.data?.nodeType || 'unknown';
  7910. const title = nodeData.title || node.data?.title || node.id;
  7911. // 优先从node.data获取score,然后从nodeData获取
  7912. let score = null;
  7913. if (node.data?.score !== undefined && node.data?.score !== null) {
  7914. score = node.data.score;
  7915. } else if (node.data?.relevance_score !== undefined && node.data?.relevance_score !== null) {
  7916. score = node.data.relevance_score;
  7917. } else if (nodeData.score !== undefined && nodeData.score !== null) {
  7918. score = nodeData.score;
  7919. } else if (nodeData.relevance_score !== undefined && nodeData.relevance_score !== null) {
  7920. score = nodeData.relevance_score;
  7921. }
  7922. const strategy = nodeData.strategy || node.data?.strategy || '';
  7923. // 构建当前行 - score可能是数字或字符串,step/round节点不显示分数
  7924. const connector = isLastNode ? '└─' : '├─';
  7925. let scoreText = '';
  7926. if (nodeType !== 'step' && nodeType !== 'round' && score !== null && score !== undefined) {
  7927. // score可能已经是字符串格式(如 "0.05"),也可能是数字
  7928. const scoreStr = typeof score === 'number' ? score.toFixed(2) : score;
  7929. scoreText = ` (分数: ${scoreStr})`;
  7930. }
  7931. const strategyText = strategy ? ` [${strategy}]` : '';
  7932. lines.push(`${prefix}${connector} ${title}${scoreText}${strategyText}`);
  7933. // 递归处理子节点
  7934. if (node.children && node.children.length > 0) {
  7935. const childPrefix = prefix + (isLastNode ? ' ' : '│ ');
  7936. traverse(node.children, childPrefix, isLastNode, depth + 1);
  7937. }
  7938. });
  7939. };
  7940. // 添加标题
  7941. const rootNode = fullNodes.find(n => n.data?.level === 0);
  7942. if (rootNode) {
  7943. lines.push(`📊 查询扩展树形结构`);
  7944. lines.push(`原始问题: ${rootNode.data.title || rootNode.data.query}`);
  7945. lines.push('');
  7946. }
  7947. traverse(treeRoots);
  7948. return lines.join('\n');
  7949. }, [treeRoots, fullNodes]);
  7950. // 复制树形结构到剪贴板
  7951. const copyTreeToClipboard = useCallback(async () => {
  7952. try {
  7953. const treeText = generateTreeText();
  7954. await navigator.clipboard.writeText(treeText);
  7955. alert('✅ 树形结构已复制到剪贴板!');
  7956. } catch (err) {
  7957. console.error('复制失败:', err);
  7958. alert('❌ 复制失败,请手动复制');
  7959. }
  7960. }, [generateTreeText]);
  7961. // 初始化树节点折叠状态
  7962. useEffect(() => {
  7963. const getAllTreeKeys = (nodes) => {
  7964. const keys = new Set();
  7965. const traverse = (node) => {
  7966. if (node.children && node.children.length > 0) {
  7967. // 排除根节点
  7968. if (node.data.level !== 0) {
  7969. keys.add(node.treeKey);
  7970. }
  7971. node.children.forEach(traverse);
  7972. }
  7973. };
  7974. nodes.forEach(traverse);
  7975. return keys;
  7976. };
  7977. setCollapsedTreeNodes(getAllTreeKeys(treeRoots));
  7978. }, [treeRoots]);
  7979. // 映射完整节点ID到画布简化节点ID
  7980. const mapTreeNodeToCanvasNode = useCallback((treeNodeId) => {
  7981. // 如果是简化模式,需要映射
  7982. if (data.fullData) {
  7983. // 从完整数据中找到节点
  7984. const fullNode = fullNodes.find(n => n.id === treeNodeId);
  7985. if (!fullNode) return treeNodeId;
  7986. // 根据节点类型和文本找到画布上的简化节点
  7987. const nodeText = fullNode.data.title || fullNode.data.query;
  7988. const nodeType = fullNode.data.nodeType || fullNode.type;
  7989. // Query类节点:找 query_xxx
  7990. if (['q', 'seg', 'sug', 'add_word', 'query'].includes(nodeType)) {
  7991. const canvasNode = initialNodes.find(n =>
  7992. (n.data.title === nodeText || n.data.query === nodeText) &&
  7993. ['query'].includes(n.type)
  7994. );
  7995. return canvasNode ? canvasNode.id : treeNodeId;
  7996. }
  7997. // Post节点:按note_id查找
  7998. if (nodeType === 'post' || nodeType === 'note') {
  7999. const noteId = fullNode.data.note_id;
  8000. if (noteId) {
  8001. const canvasNode = initialNodes.find(n => n.data.note_id === noteId);
  8002. return canvasNode ? canvasNode.id : treeNodeId;
  8003. }
  8004. }
  8005. // 其他节点类型(Round/Step等):直接返回
  8006. return treeNodeId;
  8007. }
  8008. // 非简化模式,直接返回
  8009. return treeNodeId;
  8010. }, [data.fullData, fullNodes, initialNodes]);
  8011. const renderTree = useCallback((treeNodes, level = 0) => {
  8012. return treeNodes.map(node => {
  8013. // 使用 treeKey 来区分树中的不同实例
  8014. const isCollapsed = collapsedTreeNodes.has(node.treeKey);
  8015. const isSelected = selectedNodeId === node.id;
  8016. return (
  8017. <TreeNode
  8018. key={node.treeKey}
  8019. node={node}
  8020. level={level}
  8021. isCollapsed={isCollapsed}
  8022. isSelected={isSelected}
  8023. onToggle={() => {
  8024. setCollapsedTreeNodes(prev => {
  8025. const newSet = new Set(prev);
  8026. if (newSet.has(node.treeKey)) {
  8027. newSet.delete(node.treeKey);
  8028. } else {
  8029. newSet.add(node.treeKey);
  8030. }
  8031. return newSet;
  8032. });
  8033. }}
  8034. onSelect={() => {
  8035. // 将目录节点ID映射到画布节点ID
  8036. const treeNodeId = node.id;
  8037. const canvasNodeId = mapTreeNodeToCanvasNode(treeNodeId);
  8038. // 检查画布上是否存在这个节点
  8039. const canvasNodeExists = initialNodes.some(n => n.id === canvasNodeId);
  8040. if (!canvasNodeExists) {
  8041. console.warn(`节点 ${canvasNodeId} 在画布上不存在(可能被简化了)`);
  8042. return;
  8043. }
  8044. const nodeId = canvasNodeId;
  8045. // 展开所有祖先节点
  8046. const ancestorIds = [nodeId];
  8047. const findAncestors = (id) => {
  8048. initialEdges.forEach(edge => {
  8049. if (edge.target === id && !ancestorIds.includes(edge.source)) {
  8050. ancestorIds.push(edge.source);
  8051. findAncestors(edge.source);
  8052. }
  8053. });
  8054. };
  8055. findAncestors(nodeId);
  8056. // 如果节点或其祖先被隐藏,先恢复它们
  8057. setHiddenNodes(prev => {
  8058. const newSet = new Set(prev);
  8059. ancestorIds.forEach(id => newSet.delete(id));
  8060. return newSet;
  8061. });
  8062. setSelectedNodeId(nodeId);
  8063. // 获取选中节点的直接子节点
  8064. const childrenIds = [];
  8065. initialEdges.forEach(edge => {
  8066. if (edge.source === nodeId) {
  8067. childrenIds.push(edge.target);
  8068. }
  8069. });
  8070. setCollapsedNodes(prev => {
  8071. const newSet = new Set(prev);
  8072. // 展开所有祖先节点
  8073. ancestorIds.forEach(id => newSet.delete(id));
  8074. // 展开选中节点本身
  8075. newSet.delete(nodeId);
  8076. // 展开选中节点的直接子节点
  8077. childrenIds.forEach(id => newSet.delete(id));
  8078. return newSet;
  8079. });
  8080. // 延迟聚焦,等待节点展开和布局重新计算
  8081. setTimeout(() => {
  8082. fitView({
  8083. nodes: [{ id: nodeId }],
  8084. duration: 800,
  8085. padding: 0.3,
  8086. });
  8087. }, 300);
  8088. }}
  8089. >
  8090. {node.children && node.children.length > 0 && renderTree(node.children, level + 1)}
  8091. </TreeNode>
  8092. );
  8093. });
  8094. }, [collapsedTreeNodes, selectedNodeId, nodes, setCenter, initialEdges, setCollapsedNodes, fitView, mapTreeNodeToCanvasNode, initialNodes, setHiddenNodes]);
  8095. console.log('📊 Rendering with', nodes.length, 'visible nodes and', edges.length, 'visible edges');
  8096. if (nodes.length === 0) {
  8097. return (
  8098. <div style={{ padding: 50, color: 'red', fontSize: 20 }}>
  8099. ERROR: No nodes to display!
  8100. </div>
  8101. );
  8102. }
  8103. return (
  8104. <div style={{ width: '100vw', height: '100vh', background: '#f9fafb', display: 'flex', flexDirection: 'column' }}>
  8105. {/* 顶部面包屑导航栏 */}
  8106. <div style={{
  8107. minHeight: '48px',
  8108. maxHeight: '120px',
  8109. background: 'white',
  8110. borderBottom: '1px solid #e5e7eb',
  8111. display: 'flex',
  8112. alignItems: 'flex-start',
  8113. padding: '12px 24px',
  8114. zIndex: 1000,
  8115. boxShadow: '0 1px 3px rgba(0, 0, 0, 0.05)',
  8116. flexShrink: 0,
  8117. overflowY: 'auto',
  8118. }}>
  8119. <div style={{ width: '100%' }}>
  8120. {selectedNodeId ? (
  8121. <div style={{ fontSize: '12px', color: '#6b7280' }}>
  8122. {/* 面包屑导航 - 显示所有路径 */}
  8123. {(() => {
  8124. const selectedNode = nodes.find(n => n.id === selectedNodeId);
  8125. if (!selectedNode) return null;
  8126. // 找到所有从根节点到当前节点的路径
  8127. const findAllPaths = (targetId) => {
  8128. const paths = [];
  8129. const buildPath = (nodeId, currentPath) => {
  8130. const node = initialNodes.find(n => n.id === nodeId);
  8131. if (!node) return;
  8132. const newPath = [node, ...currentPath];
  8133. // 找到所有父节点
  8134. const parents = initialEdges.filter(e => e.target === nodeId).map(e => e.source);
  8135. if (parents.length === 0) {
  8136. // 到达根节点
  8137. paths.push(newPath);
  8138. } else {
  8139. // 递归处理所有父节点
  8140. parents.forEach(parentId => {
  8141. buildPath(parentId, newPath);
  8142. });
  8143. }
  8144. };
  8145. buildPath(targetId, []);
  8146. return paths;
  8147. };
  8148. const allPaths = findAllPaths(selectedNodeId);
  8149. // 去重:将路径转换为字符串进行比较
  8150. const uniquePaths = [];
  8151. const pathStrings = new Set();
  8152. allPaths.forEach(path => {
  8153. const pathString = path.map(n => n.id).join('->');
  8154. if (!pathStrings.has(pathString)) {
  8155. pathStrings.add(pathString);
  8156. uniquePaths.push(path);
  8157. }
  8158. });
  8159. return (
  8160. <div style={{ display: 'flex', flexDirection: 'column', gap: '6px' }}>
  8161. {uniquePaths.map((path, pathIndex) => (
  8162. <div key={pathIndex} style={{ display: 'flex', alignItems: 'center', gap: '6px', flexWrap: 'wrap' }}>
  8163. {pathIndex > 0 && <span style={{ color: '#d1d5db', marginRight: '4px' }}>或</span>}
  8164. {path.map((node, index) => {
  8165. // 获取节点的 score、strategy 和 isSelected
  8166. const nodeScore = node.data.score ? parseFloat(node.data.score) : 0;
  8167. const nodeStrategy = getPrimaryStrategy(node.data); // 使用智能提取函数
  8168. const strategyColor = getStrategyColor(nodeStrategy);
  8169. const nodeIsSelected = node.type === 'note' ? node.data.matchLevel !== 'unsatisfied' : node.data.isSelected !== false;
  8170. const nodeActualType = node.data.nodeType || node.type; // 获取实际节点类型
  8171. // 计算路径节点字体颜色:根据分数提升幅度判断
  8172. let pathFontColor = '#374151'; // 默认颜色
  8173. if (node.type === 'note') {
  8174. pathFontColor = node.data.matchLevel === 'unsatisfied' ? '#ef4444' : '#374151';
  8175. } else if (node.data.seed_score !== undefined) {
  8176. const parentScore = parseFloat(node.data.seed_score);
  8177. const gain = nodeScore - parentScore;
  8178. pathFontColor = gain >= 0.05 ? '#16a34a' : '#ef4444';
  8179. } else if (index > 0) {
  8180. const prevNode = path[index - 1];
  8181. const prevScore = prevNode.data.score ? parseFloat(prevNode.data.score) : 0;
  8182. const gain = nodeScore - prevScore;
  8183. pathFontColor = gain >= 0.05 ? '#16a34a' : '#ef4444';
  8184. } else if (node.data.isSelected === false) {
  8185. pathFontColor = '#ef4444';
  8186. }
  8187. return (
  8188. <React.Fragment key={node.id + '-' + index}>
  8189. <span
  8190. onClick={() => {
  8191. const nodeId = node.id;
  8192. // 找到所有祖先节点
  8193. const ancestorIds = [nodeId];
  8194. const findAncestors = (id) => {
  8195. initialEdges.forEach(edge => {
  8196. if (edge.target === id && !ancestorIds.includes(edge.source)) {
  8197. ancestorIds.push(edge.source);
  8198. findAncestors(edge.source);
  8199. }
  8200. });
  8201. };
  8202. findAncestors(nodeId);
  8203. // 如果节点或其祖先被隐藏,先恢复它们
  8204. setHiddenNodes(prev => {
  8205. const newSet = new Set(prev);
  8206. ancestorIds.forEach(id => newSet.delete(id));
  8207. return newSet;
  8208. });
  8209. // 展开目录树中到达该节点的路径
  8210. // 需要找到所有包含该节点的树路径的 treeKey,并展开它们的父节点
  8211. setCollapsedTreeNodes(prev => {
  8212. const newSet = new Set(prev);
  8213. // 清空所有折叠状态,让目录树完全展开到选中节点
  8214. // 这样可以确保选中节点在目录中可见
  8215. return new Set();
  8216. });
  8217. setSelectedNodeId(nodeId);
  8218. setTimeout(() => {
  8219. fitView({
  8220. nodes: [{ id: nodeId }],
  8221. duration: 800,
  8222. padding: 0.3,
  8223. });
  8224. }, 100);
  8225. }}
  8226. style={{
  8227. padding: '6px 8px',
  8228. borderRadius: '4px',
  8229. background: 'white',
  8230. border: index === path.length - 1 ? '2px solid #3b82f6' : '1px solid #d1d5db',
  8231. color: '#374151',
  8232. fontWeight: index === path.length - 1 ? '600' : '400',
  8233. width: '180px',
  8234. cursor: 'pointer',
  8235. transition: 'all 0.2s ease',
  8236. position: 'relative',
  8237. display: 'inline-flex',
  8238. flexDirection: 'column',
  8239. gap: '4px',
  8240. }}
  8241. onMouseEnter={(e) => {
  8242. e.currentTarget.style.opacity = '0.8';
  8243. }}
  8244. onMouseLeave={(e) => {
  8245. e.currentTarget.style.opacity = '1';
  8246. }}
  8247. title={`${node.data.title || node.id} (Score: ${nodeScore.toFixed(2)}, Strategy: ${nodeStrategy}, Selected: ${nodeIsSelected})`}
  8248. >
  8249. {/* 上半部分:竖线 + 图标 + 文字 + 分数 */}
  8250. <div style={{
  8251. display: 'flex',
  8252. alignItems: 'center',
  8253. gap: '6px',
  8254. }}>
  8255. {/* 策略类型竖线 */}
  8256. <div style={{
  8257. width: '3px',
  8258. height: '16px',
  8259. background: strategyColor,
  8260. borderRadius: '2px',
  8261. flexShrink: 0,
  8262. }} />
  8263. {/* 节点文字 - 左侧 */}
  8264. <span style={{
  8265. flex: 1,
  8266. fontSize: '12px',
  8267. color: pathFontColor,
  8268. overflow: 'hidden',
  8269. textOverflow: 'ellipsis',
  8270. whiteSpace: 'nowrap',
  8271. }}>
  8272. {node.data.title || node.id}
  8273. </span>
  8274. {/* 域标识 - 右侧,挨着分数 */}
  8275. {(node.data.domain_type || node.data.domains_str || (node.data.domain_index !== null && node.data.domain_index !== undefined)) && (
  8276. <span style={{
  8277. fontSize: '12px',
  8278. color: '#fff',
  8279. background: '#6366f1',
  8280. padding: '2px 5px',
  8281. borderRadius: '3px',
  8282. flexShrink: 0,
  8283. fontWeight: '600',
  8284. marginLeft: '4px',
  8285. }}
  8286. title={
  8287. node.data.domain_type ? '域: ' + node.data.domain_type + ' (D' + node.data.domain_index + ')' :
  8288. node.data.domains_str ? '域: ' + node.data.domains_str :
  8289. '域 D' + node.data.domain_index
  8290. }
  8291. >
  8292. {node.data.domain_type || node.data.domains_str || ('D' + node.data.domain_index)}
  8293. </span>
  8294. )}
  8295. {/* 分数显示 - 步骤和轮次节点不显示分数 */}
  8296. {nodeActualType !== 'step' && nodeActualType !== 'round' && (
  8297. <span style={{
  8298. fontSize: '10px',
  8299. color: '#6b7280',
  8300. fontWeight: '500',
  8301. flexShrink: 0,
  8302. minWidth: '35px',
  8303. textAlign: 'right',
  8304. marginLeft: '4px',
  8305. }}>
  8306. {nodeScore.toFixed(2)}
  8307. </span>
  8308. )}
  8309. </div>
  8310. {/* 分数下划线 - 步骤和轮次节点不显示 */}
  8311. {nodeActualType !== 'step' && nodeActualType !== 'round' && (
  8312. <div style={{
  8313. width: (nodeScore * 100) + '%',
  8314. height: '2px',
  8315. background: getScoreColor(nodeScore),
  8316. borderRadius: '1px',
  8317. marginLeft: '9px',
  8318. }} />
  8319. )}
  8320. </span>
  8321. {index < path.length - 1 && <span style={{ color: '#9ca3af' }}>›</span>}
  8322. </React.Fragment>
  8323. )})}
  8324. </div>
  8325. ))}
  8326. </div>
  8327. );
  8328. })()}
  8329. </div>
  8330. ) : (
  8331. <div style={{ fontSize: '13px', color: '#9ca3af', textAlign: 'center' }}>
  8332. 选择一个节点查看路径
  8333. </div>
  8334. )}
  8335. </div>
  8336. </div>
  8337. {/* 主内容区:目录 + 画布 */}
  8338. <div style={{
  8339. display: 'flex',
  8340. flex: 1,
  8341. overflow: 'hidden',
  8342. cursor: isResizing ? 'col-resize' : 'default',
  8343. userSelect: isResizing ? 'none' : 'auto',
  8344. }}>
  8345. {/* 左侧目录树 */}
  8346. <div style={{
  8347. width: `${sidebarWidth}px`,
  8348. background: 'white',
  8349. borderRight: '1px solid #e5e7eb',
  8350. display: 'flex',
  8351. flexDirection: 'column',
  8352. flexShrink: 0,
  8353. }}>
  8354. <div style={{
  8355. padding: '12px 16px',
  8356. borderBottom: '1px solid #e5e7eb',
  8357. display: 'flex',
  8358. justifyContent: 'space-between',
  8359. alignItems: 'center',
  8360. }}>
  8361. <span style={{
  8362. fontWeight: '600',
  8363. fontSize: '14px',
  8364. color: '#111827',
  8365. }}>
  8366. 节点目录
  8367. </span>
  8368. <div style={{ display: 'flex', gap: '6px' }}>
  8369. <button
  8370. onClick={() => {
  8371. setCollapsedTreeNodes(new Set());
  8372. }}
  8373. style={{
  8374. fontSize: '11px',
  8375. padding: '4px 8px',
  8376. borderRadius: '4px',
  8377. border: '1px solid #d1d5db',
  8378. background: 'white',
  8379. color: '#6b7280',
  8380. cursor: 'pointer',
  8381. fontWeight: '500',
  8382. }}
  8383. title="展开全部节点"
  8384. >
  8385. 全部展开
  8386. </button>
  8387. <button
  8388. onClick={() => {
  8389. const getAllTreeKeys = (nodes) => {
  8390. const keys = new Set();
  8391. const traverse = (node) => {
  8392. if (node.children && node.children.length > 0) {
  8393. keys.add(node.treeKey);
  8394. node.children.forEach(traverse);
  8395. }
  8396. };
  8397. nodes.forEach(traverse);
  8398. return keys;
  8399. };
  8400. setCollapsedTreeNodes(getAllTreeKeys(treeRoots));
  8401. }}
  8402. style={{
  8403. fontSize: '11px',
  8404. padding: '4px 8px',
  8405. borderRadius: '4px',
  8406. border: '1px solid #d1d5db',
  8407. background: 'white',
  8408. color: '#6b7280',
  8409. cursor: 'pointer',
  8410. fontWeight: '500',
  8411. }}
  8412. title="折叠全部节点"
  8413. >
  8414. 全部折叠
  8415. </button>
  8416. <button
  8417. onClick={copyTreeToClipboard}
  8418. style={{
  8419. fontSize: '11px',
  8420. padding: '4px 8px',
  8421. borderRadius: '4px',
  8422. border: '1px solid #3b82f6',
  8423. background: '#3b82f6',
  8424. color: 'white',
  8425. cursor: 'pointer',
  8426. fontWeight: '500',
  8427. transition: 'all 0.2s',
  8428. }}
  8429. onMouseEnter={(e) => e.currentTarget.style.background = '#2563eb'}
  8430. onMouseLeave={(e) => e.currentTarget.style.background = '#3b82f6'}
  8431. title="复制树形结构为文本格式"
  8432. >
  8433. 📋 复制树形结构
  8434. </button>
  8435. </div>
  8436. </div>
  8437. <div style={{
  8438. flex: 1,
  8439. overflowX: 'auto',
  8440. overflowY: 'auto',
  8441. padding: '8px',
  8442. }}>
  8443. <div style={{ minWidth: 'fit-content' }}>
  8444. {renderTree(treeRoots)}
  8445. </div>
  8446. </div>
  8447. </div>
  8448. {/* 可拖拽的分隔条 */}
  8449. <div
  8450. onMouseDown={handleMouseDown}
  8451. style={{
  8452. width: '4px',
  8453. cursor: 'col-resize',
  8454. background: isResizing ? '#3b82f6' : 'transparent',
  8455. transition: isResizing ? 'none' : 'background 0.2s',
  8456. flexShrink: 0,
  8457. position: 'relative',
  8458. }}
  8459. onMouseEnter={(e) => e.currentTarget.style.background = '#e5e7eb'}
  8460. onMouseLeave={(e) => {
  8461. if (!isResizing) e.currentTarget.style.background = 'transparent';
  8462. }}
  8463. >
  8464. {/* 拖拽提示线 */}
  8465. <div style={{
  8466. position: 'absolute',
  8467. top: '50%',
  8468. left: '50%',
  8469. transform: 'translate(-50%, -50%)',
  8470. width: '1px',
  8471. height: '40px',
  8472. background: '#9ca3af',
  8473. opacity: isResizing ? 1 : 0.3,
  8474. }} />
  8475. </div>
  8476. {/* 画布区域 */}
  8477. <div style={{ flex: 1, position: 'relative' }}>
  8478. {/* 右侧图例 */}
  8479. <div style={{
  8480. position: 'absolute',
  8481. top: '20px',
  8482. right: '20px',
  8483. background: 'white',
  8484. padding: '16px',
  8485. borderRadius: '12px',
  8486. boxShadow: '0 4px 12px rgba(0, 0, 0, 0.08)',
  8487. zIndex: 1000,
  8488. maxWidth: '260px',
  8489. border: '1px solid #e5e7eb',
  8490. }}>
  8491. <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: '12px' }}>
  8492. <h3 style={{ fontSize: '14px', fontWeight: '600', color: '#111827', margin: 0 }}>图例</h3>
  8493. <button
  8494. onClick={() => setFocusMode(!focusMode)}
  8495. style={{
  8496. fontSize: '11px',
  8497. padding: '4px 8px',
  8498. borderRadius: '4px',
  8499. border: '1px solid',
  8500. borderColor: focusMode ? '#3b82f6' : '#d1d5db',
  8501. background: focusMode ? '#3b82f6' : 'white',
  8502. color: focusMode ? 'white' : '#6b7280',
  8503. cursor: 'pointer',
  8504. fontWeight: '500',
  8505. }}
  8506. title={focusMode ? '关闭聚焦模式' : '开启聚焦模式'}
  8507. >
  8508. {focusMode ? '🎯 聚焦' : '📊 全图'}
  8509. </button>
  8510. </div>
  8511. <div style={{ fontSize: '12px' }}>
  8512. {/* 画布节点展开/折叠控制 */}
  8513. <div style={{ marginBottom: '12px', paddingBottom: '12px', borderBottom: '1px solid #f3f4f6' }}>
  8514. <div style={{ fontSize: '12px', fontWeight: '500', marginBottom: '8px', color: '#374151' }}>节点控制</div>
  8515. <div style={{ display: 'flex', gap: '6px' }}>
  8516. <button
  8517. onClick={() => {
  8518. setCollapsedNodes(new Set());
  8519. }}
  8520. style={{
  8521. fontSize: '11px',
  8522. padding: '4px 8px',
  8523. borderRadius: '4px',
  8524. border: '1px solid #d1d5db',
  8525. background: 'white',
  8526. color: '#6b7280',
  8527. cursor: 'pointer',
  8528. fontWeight: '500',
  8529. flex: 1,
  8530. }}
  8531. title="展开画布中所有节点的子节点"
  8532. >
  8533. 全部展开
  8534. </button>
  8535. <button
  8536. onClick={() => {
  8537. const allNodeIds = new Set(initialNodes.map(n => n.id));
  8538. setCollapsedNodes(allNodeIds);
  8539. }}
  8540. style={{
  8541. fontSize: '11px',
  8542. padding: '4px 8px',
  8543. borderRadius: '4px',
  8544. border: '1px solid #d1d5db',
  8545. background: 'white',
  8546. color: '#6b7280',
  8547. cursor: 'pointer',
  8548. fontWeight: '500',
  8549. flex: 1,
  8550. }}
  8551. title="折叠画布中所有节点的子节点"
  8552. >
  8553. 全部折叠
  8554. </button>
  8555. </div>
  8556. </div>
  8557. <div style={{ paddingTop: '12px', borderTop: '1px solid #f3f4f6' }}>
  8558. <div style={{ fontSize: '12px', fontWeight: '500', marginBottom: '8px', color: '#374151' }}>策略类型</div>
  8559. <div style={{ display: 'flex', alignItems: 'center', margin: '6px 0' }}>
  8560. <div style={{ width: '20px', height: '2px', marginRight: '8px', background: '#10b981', opacity: 0.7 }}></div>
  8561. <span style={{ color: '#6b7280', fontSize: '11px' }}>初始分词</span>
  8562. </div>
  8563. <div style={{ display: 'flex', alignItems: 'center', margin: '6px 0' }}>
  8564. <div style={{ width: '20px', height: '2px', marginRight: '8px', background: '#06b6d4', opacity: 0.7 }}></div>
  8565. <span style={{ color: '#6b7280', fontSize: '11px' }}>调用sug</span>
  8566. </div>
  8567. <div style={{ display: 'flex', alignItems: 'center', margin: '6px 0' }}>
  8568. <div style={{ width: '20px', height: '2px', marginRight: '8px', background: '#f59e0b', opacity: 0.7 }}></div>
  8569. <span style={{ color: '#6b7280', fontSize: '11px' }}>同义改写</span>
  8570. </div>
  8571. <div style={{ display: 'flex', alignItems: 'center', margin: '6px 0' }}>
  8572. <div style={{ width: '20px', height: '2px', marginRight: '8px', background: '#3b82f6', opacity: 0.7 }}></div>
  8573. <span style={{ color: '#6b7280', fontSize: '11px' }}>加词</span>
  8574. </div>
  8575. <div style={{ display: 'flex', alignItems: 'center', margin: '6px 0' }}>
  8576. <div style={{ width: '20px', height: '2px', marginRight: '8px', background: '#8b5cf6', opacity: 0.7 }}></div>
  8577. <span style={{ color: '#6b7280', fontSize: '11px' }}>抽象改写</span>
  8578. </div>
  8579. <div style={{ display: 'flex', alignItems: 'center', margin: '6px 0' }}>
  8580. <div style={{ width: '20px', height: '2px', marginRight: '8px', background: '#ec4899', opacity: 0.7 }}></div>
  8581. <span style={{ color: '#6b7280', fontSize: '11px' }}>基于部分匹配改进</span>
  8582. </div>
  8583. <div style={{ display: 'flex', alignItems: 'center', margin: '6px 0' }}>
  8584. <div style={{ width: '20px', height: '2px', marginRight: '8px', background: '#a855f7', opacity: 0.7 }}></div>
  8585. <span style={{ color: '#6b7280', fontSize: '11px' }}>结果分支-抽象改写</span>
  8586. </div>
  8587. <div style={{ display: 'flex', alignItems: 'center', margin: '6px 0' }}>
  8588. <div style={{ width: '20px', height: '2px', marginRight: '8px', background: '#fb923c', opacity: 0.7 }}></div>
  8589. <span style={{ color: '#6b7280', fontSize: '11px' }}>结果分支-同义改写</span>
  8590. </div>
  8591. </div>
  8592. <div style={{
  8593. marginTop: '12px',
  8594. paddingTop: '12px',
  8595. borderTop: '1px solid #f3f4f6',
  8596. fontSize: '11px',
  8597. color: '#9ca3af',
  8598. lineHeight: '1.5',
  8599. }}>
  8600. 💡 点击节点左上角 × 隐藏节点
  8601. </div>
  8602. {/* 隐藏节点列表 - 在图例内部 */}
  8603. {hiddenNodes.size > 0 && (
  8604. <div style={{
  8605. marginTop: '12px',
  8606. paddingTop: '12px',
  8607. borderTop: '1px solid #f3f4f6',
  8608. }}>
  8609. <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: '8px' }}>
  8610. <h4 style={{ fontSize: '12px', fontWeight: '600', color: '#111827' }}>已隐藏节点</h4>
  8611. <button
  8612. onClick={() => setHiddenNodes(new Set())}
  8613. style={{
  8614. fontSize: '10px',
  8615. color: '#3b82f6',
  8616. background: 'none',
  8617. border: 'none',
  8618. cursor: 'pointer',
  8619. textDecoration: 'underline',
  8620. }}
  8621. >
  8622. 全部恢复
  8623. </button>
  8624. </div>
  8625. <div style={{ fontSize: '12px', maxHeight: '200px', overflow: 'auto' }}>
  8626. {Array.from(hiddenNodes).map(nodeId => {
  8627. const node = initialNodes.find(n => n.id === nodeId);
  8628. if (!node) return null;
  8629. return (
  8630. <div
  8631. key={nodeId}
  8632. style={{
  8633. display: 'flex',
  8634. justifyContent: 'space-between',
  8635. alignItems: 'center',
  8636. padding: '6px 8px',
  8637. margin: '4px 0',
  8638. background: '#f9fafb',
  8639. borderRadius: '6px',
  8640. fontSize: '11px',
  8641. }}
  8642. >
  8643. <span
  8644. style={{
  8645. flex: 1,
  8646. overflow: 'hidden',
  8647. textOverflow: 'ellipsis',
  8648. whiteSpace: 'nowrap',
  8649. color: '#374151',
  8650. }}
  8651. title={node.data.title || nodeId}
  8652. >
  8653. {node.data.title || nodeId}
  8654. </span>
  8655. <button
  8656. onClick={() => {
  8657. setHiddenNodes(prev => {
  8658. const newSet = new Set(prev);
  8659. newSet.delete(nodeId);
  8660. return newSet;
  8661. });
  8662. }}
  8663. style={{
  8664. marginLeft: '8px',
  8665. fontSize: '10px',
  8666. color: '#10b981',
  8667. background: 'none',
  8668. border: 'none',
  8669. cursor: 'pointer',
  8670. flexShrink: 0,
  8671. }}
  8672. >
  8673. 恢复
  8674. </button>
  8675. </div>
  8676. );
  8677. })}
  8678. </div>
  8679. </div>
  8680. )}
  8681. </div>
  8682. </div>
  8683. {/* React Flow 画布 */}
  8684. <ReactFlow
  8685. nodes={nodes}
  8686. edges={edges}
  8687. nodeTypes={nodeTypes}
  8688. fitView
  8689. fitViewOptions={{ padding: 0.2, duration: 500 }}
  8690. minZoom={0.4}
  8691. maxZoom={1.5}
  8692. nodesDraggable={true}
  8693. nodesConnectable={false}
  8694. elementsSelectable={true}
  8695. defaultEdgeOptions={{
  8696. type: 'smoothstep',
  8697. }}
  8698. proOptions={{ hideAttribution: true }}
  8699. onNodeClick={(event, clickedNode) => {
  8700. setSelectedNodeId(clickedNode.id);
  8701. }}
  8702. >
  8703. <Controls style={{ bottom: '20px', left: 'auto', right: '20px' }} />
  8704. <Background variant="dots" gap={20} size={1} color="#e5e7eb" />
  8705. </ReactFlow>
  8706. </div>
  8707. </div>
  8708. </div>
  8709. );
  8710. }
  8711. function App() {
  8712. return (
  8713. <ReactFlowProvider>
  8714. <FlowContent />
  8715. </ReactFlowProvider>
  8716. );
  8717. }
  8718. const root = createRoot(document.getElementById('root'));
  8719. root.render(<App />);