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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7290c174d3c10e482d1bd373fff53bb32bea1dbd9d471ac12939ef79a19f5a6
|
|
| MD5 |
f8c0eff70379e224d25d036066ca1ed3
|
|
| BLAKE2b-256 |
a12e79a73e2502e9a804206a86ebf02b128aa4537112013fcb6d4d562057ac19
|
File details
Details for the file conceptnet_local-1.0.3-py3-none-any.whl.
File metadata
- Download URL: conceptnet_local-1.0.3-py3-none-any.whl
- Upload date:
- Size: 16.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f280e2d9164fe6cdcf2626fff250d5c10e61990af0ee338cebc88b4e6462ff1
|
|
| MD5 |
edf1c99e912ec324afa2c2a4e40c7c70
|
|
| BLAKE2b-256 |
7d3351b725cc0635191cb3a6742da3b4fe37727eb22deaeff9801368ecad05de
|