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.2GB): 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.2.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.2-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: conceptnet_local-1.0.2.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.2.tar.gz
Algorithm Hash digest
SHA256 e385241b6923f1c639a8951245f16365f6c9f69a657657448373ffed94b0de55
MD5 c7377845f214ac8e1eacfc8cba5456a9
BLAKE2b-256 c289a1b7000d71226278b880f4384a7c673318fd6dea84c65727e23e0b27f45e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for conceptnet_local-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 38fd76ec3a4a79a0ded8d12bf94dd6800cec36c80618b1cf68a2d51999606253
MD5 4b103a81088ca34e82693a94a31d6c78
BLAKE2b-256 620a28f5abc0b068af876df8231679ef3882e99c6e27b9a53275f3d7569a58dd

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