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))

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.1.tar.gz (15.0 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.1-py3-none-any.whl (16.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: conceptnet_local-1.0.1.tar.gz
  • Upload date:
  • Size: 15.0 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.1.tar.gz
Algorithm Hash digest
SHA256 cfad66a9945f0db2f064ec55c058cded75d937f884cea9d4504154dcf218169c
MD5 ede455c82f87089eff6e62d231fc94aa
BLAKE2b-256 a1422d0de02f3f4a28b7fbee4a14e9e9bd8ccf16aa203d28a897f253b3515b10

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for conceptnet_local-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3f4686611a517215527454303c65884b4dceb5132b2ef566f6533dc28a7d90a4
MD5 46286745657ec83fe576cff6cdaf1919
BLAKE2b-256 18f77044ac810538d24e9056fe5ac4a84fb837ada39a0de4a82f97c9f0975e5a

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