Skip to main content

ConceptNet and embeddings with a local DB and API.

Project description

Local ConceptNet

ConceptNet and fastText embeddings with a local DB and API. English only.

Setup

Make sure the path to the DB is included in your environment variables:

CN_DB_PATH=<path>/cn.db

The DB file can be downloaded from here (~2.4GB): https://drive.google.com/file/d/1ykKOa8oUzdiI5OShaQgyP8AZBH2iHDot/view?usp=sharing

Alternatively, the DB can be set up manually by navigating to the db_setup directory in this repository and following the instructions in the notebook there.

Example Usage

Import:

import conceptnet_local as cnl

Concept Details

List of all concept IDs:

all_concept_ids = cnl.get_all_concept_ids()

All edges connecting to a concept:

edges = cnl.get_all_edges(cn_id="/c/en/example")

Relatedess between two concepts according to fastText embeddings:

relatedness = cnl.get_relatedness("/c/en/example", "/c/en/test")

Lowest-Cost Paths

Get a variant of A* by specifying cost and heuristic weights:

from conceptnet_local import get_a_star_variant, CostFunction, HeuristicFunction

CustomAStar = get_a_star_variant(
    cost_weights={
        CostFunction.EDGE_COUNT: 2.,
        CostFunction.SIMILARITY_DIFFERENCE: 1.,
    },
    heuristic_weights={
        HeuristicFunction.SIMILARITY_TO_GOAL: 1.,
    }
)

or create a fully custom variant of A*:

from conceptnet_local import AStar, Concept, Relation

class CustomAStar(AStar):
    def get_cost(self, source: Concept, target: Concept, relation: Relation, goal: Concept) -> float:
        ...

    def get_heuristic(self, current: Concept, goal: Concept) -> float:
        ...

Get the lowest-cost path:

custom_a_star = CustomAStar()
path = custom_a_star.compute_path(input_concept="/c/en/example", output_concept="/c/en/test", print_time=True)

print(cnl.format_path(path=path))

Concept Extraction

Extract the ConceptNet concepts from a given text, along with their locations in the text:

concepts_in_text = cnl.get_concepts_in_text(text="This is an example.")

Custom Queries

Get a reference to the DB:

connection, cursor = cnl.setup_sqlite_db()

Execute queries, e.g.:

partial_id = "examp"
statement = cursor.execute("SELECT embedding FROM embeddings WHERE concept_id LIKE '%?%'", (partial_id,))
result = statement.fetchall()

Close DB connection:

cnl.close_sqlite_db(db_connection=connection)

Version History

1.0

  • release 🎉

0.9

  • concept extraction from text
  • concept degree retrieval

0.8

  • concepts table
  • retrieval of similar concepts
  • concept existence check

0.7

  • separate utils file
  • link label formatting
  • natural-language path formatting

0.6

  • no more FastText model built in
  • embedding computation method optional in relatedness method
  • optimized embedding retrieval from DB

0.5

  • custom initialization method in A*

0.4

  • FastText embeddings for arbitrary text

0.3

  • retrieval of all concept IDs

0.2

  • FastText embeddings

0.1

  • reading links and embeddings from DB
  • custom A* with configurable variants
  • greedy version of Yen's algorithm

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

conceptnet_local-1.0.3.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

conceptnet_local-1.0.3-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

Details for the file conceptnet_local-1.0.3.tar.gz.

File metadata

  • Download URL: conceptnet_local-1.0.3.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for conceptnet_local-1.0.3.tar.gz
Algorithm Hash digest
SHA256 e7290c174d3c10e482d1bd373fff53bb32bea1dbd9d471ac12939ef79a19f5a6
MD5 f8c0eff70379e224d25d036066ca1ed3
BLAKE2b-256 a12e79a73e2502e9a804206a86ebf02b128aa4537112013fcb6d4d562057ac19

See more details on using hashes here.

File details

Details for the file conceptnet_local-1.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for conceptnet_local-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 3f280e2d9164fe6cdcf2626fff250d5c10e61990af0ee338cebc88b4e6462ff1
MD5 edf1c99e912ec324afa2c2a4e40c7c70
BLAKE2b-256 7d3351b725cc0635191cb3a6742da3b4fe37727eb22deaeff9801368ecad05de

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page