{"_id":"@bmssearch/bms-min-hasher","name":"@bmssearch/bms-min-hasher","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"@bmssearch/bms-min-hasher","version":"0.0.1","description":"Utilities for generating MinHash signatures from BMS/BMSON chart features.","license":"MIT","author":"","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"engines":{"node":">=20"},"scripts":{"build":"tsc -p tsconfig.json","test":"vitest","test:ci":"vitest run&&go test ./...","prepublishOnly":"npm run build && npm run test:ci"},"devDependencies":{"fast-diff":"^1.3.0","fast-glob":"^3.3.3","ts-node":"^10.9.2","typescript":"^5.9.3","vitest":"^4.0.18"},"dependencies":{"bms":"^51.0.0","xxhash-wasm":"^1.1.0"},"gitHead":"60cb0e3a98e437f4cb86f7281d616110a2b85272","_id":"@bmssearch/bms-min-hasher@0.0.1","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-x8ITnRGh9v7UvoIfrRbB+5c8xyCBIUKE8G+U8uOHVgMiHukna5XYdapFoiUWbw3xWynZYwhlijQ6Ig5bnXR9Dw==","shasum":"b0cb568099b22315efe05f112059bb92b6270489","tarball":"https://registry.npmjs.org/@bmssearch/bms-min-hasher/-/bms-min-hasher-0.0.1.tgz","fileCount":48,"unpackedSize":23907,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDPEqFjm3Jr4B3Cp7s/iHfcfJQmzIXSC1oqjQo9Ak5q8wIhAIvVJT4B+K9tuD44KM982iBEwUcRzPLopp2IbYFqZqag"}]},"_npmUser":{"name":"yuto-hasegawa","email":"hsgw@qstol.info"},"directories":{},"maintainers":[{"name":"yuto-hasegawa","email":"hsgw@qstol.info"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bms-min-hasher_0.0.1_1771937452672_0.6361646054033967"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-24T12:50:52.501Z","0.0.1":"2026-02-24T12:50:52.820Z","modified":"2026-02-24T12:50:53.097Z"},"maintainers":[{"name":"yuto-hasegawa","email":"hsgw@qstol.info"}],"description":"Utilities for generating MinHash signatures from BMS/BMSON chart features.","license":"MIT","readme":"# bms-min-hasher\n\nBMS譜面の**帰属本体類似度**を算出するために使用できる **MinHash** の仕様および実装です。  \n譜面同士の MinHash を比較することで、同じ本体から派生している「らしさ」を得ることができます。 \n\nこのプロジェクトでは MinHash 算出の手順と各種定数を **仕様化** し、Node.js および golang における実装とテストを備えることで統一された MinHash の算出方法を提供します。\n\n## 仕様\n\n[SPEC.md](SPEC.md) を参照してください。\n\n## ライブラリとしての利用\n\n仕様を必要とせず、入力に対する結果のみが必要な場合は下記の手順で使用できます。\n\n```bash\nnpm install @bmssearch/bms-min-hasher\n```\n\nMinHash を得る手順\n```ts\nimport {\n  ConventionalBmsFeatureTokensExtractor,\n  hashTokens,\n  computeMinHash,\n} from \"@bmssearch/bms-min-hasher\";\nimport fs from \"node:fs/promises\";\n\nconst buf = await fs.readFile(\"bms/file/path.bme\"); // BMSファイルのバイナリを読みこむ\n\n// 従来BMS（bmsonでない）から特徴文字列を抽出するモジュール\nconst extractor = new ConventionalBmsFeatureTokensExtractor();\nconst featureTokens = await extractor.extract(buf);\n\n// MinHash 計算のため、特徴文字列をハッシュ化し uint32 の配列を得る\nconst hashedTokens = await hashTokens(featureTokens);\n\n// MinHash を得る\nconst minHash = computeMinHash(hashedTokens);\n\nconsole.log(minHash); // eg. [8069152,8482535,54284318,34004118,13351918, ...]\n```\n\n類似度の比較\n```ts\nimport {similarity} from \"@bmssearch/bms-min-hasher\";\n\nconst sim = similarity(minHash1, minHash2); // eg. 0.62\n```\n\nひとつの MinHash をもとに、データベースから類似する MinHash を検索するようなユースケースでは `LSH` と呼ばれる手法が有効です。","readmeFilename":"README.md","_rev":"1-aad504ebd1879eb794f152183703cd70"}