Skip to content

Latest commit

 

History

History
153 lines (122 loc) · 4.75 KB

classes.md

File metadata and controls

153 lines (122 loc) · 4.75 KB

Modeling categorization

The application includes the following entities, most of which an be broken into one of the following four areas:

  • Search activity, which flow in continuously with Terms and Search Events;
  • A knowledge graph, which includes the categories, detectors, and relationships between the two which TACOS defines and maintains, and which is consulted during categorization;
  • The linkages between these search terms and the graph, which record which signals are detected in each term, and how those signals are interpreted to place the term into a category; and
  • User activity which is provided by staff who review the application's decisions and provide ground truth for future improvements.
classDiagram
  direction LR
  
  Term --> SearchEvent : has many

  Term "1" --> "1..*" Detection
  Term "1" --> "0..*" Categorization
  Detection "0..*" --> "1" Detector

  DetectorCategory "0..*" --> "1" Category

  Categorization "0..*" --> "1" Category

  Detector "1" --> "0..*" DetectorCategory

  Confirmation --> Term
  Confirmation --> Category
  User --> Confirmation : provides many

  class User
    User: +String uid
    User: +String email
    User: +Boolean admin

  class Term
    Term: id
    Term: +String phrase
    Term: combinedScores()
    Term: recordDetections()

  class SearchEvent
    SearchEvent: +Integer id
    SearchEvent: +Integer term_id
    SearchEvent: +String source
    SearchEvent: +Timestamp created_at
    SearchEvent: single_month()

  class Detection
    Detection: +Integer id
    Detection: +Integer term_id
    Detection: +Integer detector_id
    Detection: +String detector_version
    Detection: current()
    Detection: for_detector()
    Detection: for_term()
    Detection: scores()

  class Detector
    Detector: +Integer id
    Detector: +String name

  class Category
    Category: +Integer id
    Category: +String name

  class Categorization
    Categorization: +Integer category_id
    Categorization: +Integer term_id
    Categorization: +Float confidence
    Categorization: +String detector_version
    Categorization: current()

  class DetectorCategory
    DetectorCategory: +Integer id
    DetectorCategory: +Integer detector_id
    DetectorCategory: +Integer category_id
    DetectorCategory: +Float confidence
    DetectorCategory: incrementConfidence()
    DetectorCategory: decrementConfidence()

  class DetectorJournal
    DetectorJournal: full_term_match()
    DetectorJournal: partial_term_match()
    DetectorJournal: record()

  class DetectorLcsh
    DetectorLcsh: record()

  class DetectorStandardIdentifier
    DetectorStandardIdentifier: record()

  class DetectorSuggestedResource
    DetectorSuggestedResource: bulk_replace()
    DetectorSuggestedResource: calculate_fingerprint()
    DetectorSuggestedResource: full_term_match()
    DetectorSuggestedResource: record()
    DetectorSuggestedResource: update_fingerprint()

  class Confirmation
    Confirmation: +Integer id
    Confirmation: +Integer user_id
    Confirmation: +Integer term_id
    Confirmation: +Integer category_id
    Confirmation: +Boolean flag

  namespace SearchActivity{
    class Term
    class SearchEvent
  }

  namespace KnowledgeGraph{
    class Detectors
    class DetectorCategory
    class Category
  }

  namespace Detectors {
    class Detector
    class DetectorJournal["Detector::Journal"]
    class DetectorLcsh["Detector::Lcsh"]
    class DetectorStandardIdentifier["Detector::StandardIdentifiers"]
    class DetectorSuggestedResource["Detector::SuggestedResource"]
  }

  namespace UserActivity {
    class Confirmation
    class User

  }

  style SearchEvent fill:#000,stroke:#66c2a5,color:#66c2a5,stroke-width:4px;
  style Term fill:#000,stroke:#66c2a5,color:#66c2a5,stroke-width:4px;

  style Category fill:#000,stroke:#fc8d62,color:#fc8d62
  style DetectorCategory fill:#000,stroke:#fc8d62,color:#fc8d62
  style Detector fill:#000,stroke:#fc8d62,color:#fc8d62
  style DetectorJournal fill:#000,stroke:#fc8d62,color:#fc8d62
  style DetectorLcsh fill:#000,stroke:#fc8d62,color:#fc8d62
  style DetectorStandardIdentifier fill:#000,stroke:#fc8d62,color:#fc8d62
  style DetectorSuggestedResource fill:#000,stroke:#fc8d62,color:#fc8d62

  style Categorization fill:#000,stroke:#8da0cb,color:#8da0cb,stroke-dasharray: 3 5;
  style Detection fill:#000,stroke:#8da0cb,color:#8da0cb,stroke-dasharray: 3 5;

  style Confirmation fill:#000,stroke:#ffd407,color:#ffd407,stroke-dasharray: 5 10;
  style User fill:#000,stroke:#ffd407,color:#ffd407,stroke-dasharray: 5 10;
Loading