2010-10-07 9 views
1

Nous avons un ensemble de documents, chacun a un ensemble de fonctionnalités. Étant donné la caractéristique A, nous devons savoir quelle est la probabilité d'avoir la caractéristique B dans le même document.Suggestions pour une structure de données pour des caractéristiques connexes

J'ai pensé à la construction d'une matrice de probabilité, s.t: M (i, j) = Probabilité d'avoir la caractéristique B dans un document, étant donné que la caractéristique A est là.

Cependant, nous avons une exigence supplémentaire: Étant donné que la caractéristique A est dans le document, quelles sont toutes les caractéristiques qui ont une probabilité> P d'être dans le même document. Pendant ce temps, tout ce que je pouvais penser est une matrice clairsemée pour la matrice des probabilités, et après qu'elle soit calculée, pour chaque entité parcourant toute la colonne, triez-la par P et conservez-la dans une liste chaînée. (Alors maintenant, nous avons pour chaque caractéristique, une liste de caractéristiques correspondantes

Cette complexité spatiale est assez grande (pire des cas: N^2, et N est grand!), Et la complexité temporelle de chaque recherche est O (N)

Toute meilleure idée

+0

@yassale: N est grand comme dans 10^3 ou comme dans 10^9? Kilo-large ou giga-large? –

+0

@Mark: environ 10^9 – Yossale

+0

Estimation du nombre de documents? Nombre maximum de fonctionnalités pour chaque document? Nombre total de fonctionnalités différentes? Cela aiderait car une solution générale ne peut être qu'une matrice clairsemée, mais si vous avez beaucoup plus de fonctionnalités que de documents, il peut être plus rapide de parcourir chaque document. Quelle est la complexité de tester si une fonctionnalité donnée est dans un document? –

Répondre

1

Si le nombre de fonctions est comparable au nombre de documents, ou plus, envisager la tenue d'un index inversé:.? pour chaque prise de fonction (par exemple une liste triée des) documents Vous pouvez alors calculer la probabilité de B donnée A en exécutant une fusion sur les listes triées pour les entités A et B.

Pour la question "caractéristiques communes attendues A", je ne vois rien de mieux que de pré-calculer la réponse pour chaque A et d'espérer que la liste des caractéristiques qui en résulte ne soit pas trop longue.

Questions connexes