簡體   English   中英

從輸入文本創建標簽雲的最佳方法

[英]Best approach to create a tag cloud from input text

我想知道從輸入文本(在用戶輸入時)生成標簽雲的最佳方法是什么。 例如,如果用戶鍵入包含關鍵字“sci-fi, technology, effects”的故事文本,標簽雲將由每個關鍵字根據它們在每個故事中的頻率按相關性排序形成。 標簽雲將按降序顯示並使用相同的字體大小,這不是顯示算法,而是我應該實現的搜索算法。 我正在使用 mysql 和 php。 我應該堅持 MATCH...AGAINST 條款嗎? 我應該實現標簽表嗎?

更多細節我有一個包含很多故事的 mysql 表。 當用戶鍵入他/她自己的一個時,我想顯示一個標簽雲,其中包含從輸入文本中獲取的最常見單詞,這些單詞出現在保存在我的數據庫中的這組故事中。 標簽雲將僅用於根據他們在所有用戶輸入的所有故事中出現的頻率,向用戶顯示他/她輸入的單詞在他/她自己的故事中的相關性。

我認為您需要做的第一件事是更清楚地定義標記系統的目的。 您想簡單地根據文本中出現頻率最高的單詞構建標簽嗎? 這讓我覺得設計時考慮到了搜索排名。

...或者您是否希望您的內容更好地組織,並且標簽雲是一種提供更好的用戶體驗並在內容之間創建更明顯關系的方式(即,這兩個都被標記為科幻,所以顯示它們屬於科幻類)。

如果是前者,您可能不需要做任何事情,但:

然后,您只需要確定一個單詞必須出現多少次(百分比或數字),並將這些標簽存儲在一個表格中,該表格顯示了標簽和內容之間的聯系。

要實現“在用戶輸入時”部分,您只需要使用一點 jQuery 的 ajax 功能來不斷調用構建標簽列表的腳本(即在 keydown 上)。

另一種選擇(更好的用戶體驗)將包含許多相同的元素,但您必須考慮更多。 我會考慮的一些事情:

  • 你想限制某些標簽(也許你不想讓任何人創建新標簽)?
  • 你將如何處理同義詞
  • 如果您將支持多種語言
  • 如果您希望優先推薦現有標簽(可能很接近)而不是推薦新標簽

一旦你完全定義了邏輯和用戶體驗,你就可以回到搜索算法。 MATCH 和 AGAINST 是不錯的選擇,但您可能會發現一個簡單的 LIKE 會為您完成。

祝你好運=)

如果您希望在用戶鍵入時生成標簽雲,您可以通過兩種方式進行。

  • 直接從輸入文本更新標簽雲
  • 將輸入文本發送到后端(使用 ajax/comet 實時),然后保存、計算詞頻並返回生成雲的數據。

I would go with the former using a jQuery plugin such as - http://plugins.jquery.com/plugin-tags/tag-cloud

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM