|
|
--- |
|
|
tags: |
|
|
- sentence-transformers |
|
|
- sentence-similarity |
|
|
- feature-extraction |
|
|
- dense |
|
|
- generated_from_trainer |
|
|
- dataset_size:2392064 |
|
|
- loss:CachedMultipleNegativesSymmetricRankingLoss |
|
|
base_model: Shuu12121/CodeModernBERT-Crow-v1.1 |
|
|
widget: |
|
|
- source_sentence: 'Encapsulates the work with test rules. |
|
|
|
|
|
@param {array} aRules The test rules |
|
|
|
|
|
@constructor |
|
|
|
|
|
@private' |
|
|
sentences: |
|
|
- "createImageResizer = (width, height) => (source) => {\n const resized = new\ |
|
|
\ PNG({ width, height, fill: true });\n PNG.bitblt(source, resized, 0, 0, source.width,\ |
|
|
\ source.height, 0, 0);\n return resized;\n}" |
|
|
- "TestRules = function (aRules) {\n\t\t\tthis._aRules = aRules;\n\t\t}" |
|
|
- "function addEventTypeNameToConfig(_ref, isInteractive) {\n var topEvent = _ref[0],\n\ |
|
|
\ event = _ref[1];\n\n var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n\ |
|
|
\ var onEvent = 'on' + capitalizedEvent;\n\n var type = {\n phasedRegistrationNames:\ |
|
|
\ {\n bubbled: onEvent,\n captured: onEvent + 'Capture'\n },\n \ |
|
|
\ dependencies: [topEvent],\n isInteractive: isInteractive\n };\n eventTypes$4[event]\ |
|
|
\ = type;\n topLevelEventsToDispatchConfig[topEvent] = type;\n}" |
|
|
- source_sentence: 'Check if a value has one or more properties and that value is |
|
|
not undefined. |
|
|
|
|
|
@param {any} obj The value to check. |
|
|
|
|
|
@returns {boolean} `true` if `obj` has one or more properties that value is not |
|
|
undefined.' |
|
|
sentences: |
|
|
- "calci = function(hashbuf, sig, pubkey) {\n for (var i = 0; i < 4; i++) {\n \ |
|
|
\ var Qprime;\n try {\n Qprime = getPublicKey(hashbuf, sig, i);\n \ |
|
|
\ } catch (e) {\n console.error(e);\n continue;\n }\n\n if (Qprime.point.eq(pubkey.point))\ |
|
|
\ {\n sig.i = i;\n sig.compressed = pubkey.compressed;\n return\ |
|
|
\ sig;\n }\n }\n\n throw new Error('Unable to find valid recovery factor');\n\ |
|
|
}" |
|
|
- "function hasDefinedProperty(obj) {\n\tif (typeof obj === \"object\" && obj !==\ |
|
|
\ null) {\n\t\tfor (const key in obj) {\n\t\t\tif (typeof obj[key] !== \"undefined\"\ |
|
|
) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}" |
|
|
- "function joinSequenceDiffsByShifting(sequence1, sequence2, sequenceDiffs) {\n\ |
|
|
\ if (sequenceDiffs.length === 0) {\n return sequenceDiffs;\n }\n\ |
|
|
\ const result = [];\n result.push(sequenceDiffs[0]);\n // First move\ |
|
|
\ them all to the left as much as possible and join them if possible\n for\ |
|
|
\ (let i = 1; i < sequenceDiffs.length; i++) {\n const prevResult = result[result.length\ |
|
|
\ - 1];\n let cur = sequenceDiffs[i];\n if (cur.seq1Range.isEmpty\ |
|
|
\ || cur.seq2Range.isEmpty) {\n const length = cur.seq1Range.start\ |
|
|
\ - prevResult.seq1Range.endExclusive;\n let d;\n for (d\ |
|
|
\ = 1; d <= length; d++) {\n if (sequence1.getElement(cur.seq1Range.start\ |
|
|
\ - d) !== sequence1.getElement(cur.seq1Range.endExclusive - d) ||\n \ |
|
|
\ sequence2.getElement(cur.seq2Range.start - d) !== sequence2.getElement(cur.seq2Range.endExclusive\ |
|
|
\ - d)) {\n break;\n }\n }\n \ |
|
|
\ d--;\n if (d === length) {\n // Merge previous\ |
|
|
\ and current diff\n result[result.length - 1] = new SequenceDiff(new\ |
|
|
\ OffsetRange(prevResult.seq1Range.start, cur.seq1Range.endExclusive - length),\ |
|
|
\ new OffsetRange(prevResult.seq2Range.start, cur.seq2Range.endExclusive - length));\n\ |
|
|
\ continue;\n }\n cur = cur.delta(-d);\n\ |
|
|
\ }\n result.push(cur);\n }\n const result2 = [];\n //\ |
|
|
\ Then move them all to the right and join them again if possible\n for (let\ |
|
|
\ i = 0; i < result.length - 1; i++) {\n const nextResult = result[i +\ |
|
|
\ 1];\n let cur = result[i];\n if (cur.seq1Range.isEmpty || cur.seq2Range.isEmpty)\ |
|
|
\ {\n const length = nextResult.seq1Range.start - cur.seq1Range.endExclusive;\n\ |
|
|
\ let d;\n for (d = 0; d < length; d++) {\n \ |
|
|
\ if (!sequence1.isStronglyEqual(cur.seq1Range.start + d, cur.seq1Range.endExclusive\ |
|
|
\ + d) ||\n !sequence2.isStronglyEqual(cur.seq2Range.start\ |
|
|
\ + d, cur.seq2Range.endExclusive + d)) {\n break;\n \ |
|
|
\ }\n }\n if (d === length) {\n \ |
|
|
\ // Merge previous and current diff, write to result!\n result[i\ |
|
|
\ + 1] = new SequenceDiff(new OffsetRange(cur.seq1Range.start + length, nextResult.seq1Range.endExclusive),\ |
|
|
\ new OffsetRange(cur.seq2Range.start + length, nextResult.seq2Range.endExclusive));\n\ |
|
|
\ continue;\n }\n if (d > 0) {\n \ |
|
|
\ cur = cur.delta(d);\n }\n }\n result2.push(cur);\n\ |
|
|
\ }\n if (result.length > 0) {\n result2.push(result[result.length\ |
|
|
\ - 1]);\n }\n return result2;\n}" |
|
|
- source_sentence: 'Adds two vec2''s after scaling the second operand by a scalar |
|
|
value |
|
|
|
|
|
|
|
|
@param {vec2} out the receiving vector |
|
|
|
|
|
@param {ReadonlyVec2} a the first operand |
|
|
|
|
|
@param {ReadonlyVec2} b the second operand |
|
|
|
|
|
@param {Number} scale the amount to scale b by before adding |
|
|
|
|
|
@returns {vec2} out' |
|
|
sentences: |
|
|
- "async forceStripeSubscriptionToProduct(data, options) {\n if (!this._stripeAPIService.configured)\ |
|
|
\ {\n throw new DataImportError({\n message: tpl(messages.noStripeConnection,\ |
|
|
\ {action: 'force subscription to product'})\n });\n }\n\n \ |
|
|
\ // Retrieve customer's existing subscription information\n const\ |
|
|
\ stripeCustomer = await this._stripeAPIService.getCustomer(data.customer_id);\n\ |
|
|
\n // Subscription can only be forced if the customer exists\n if\ |
|
|
\ (!stripeCustomer) {\n throw new DataImportError({message: tpl(messages.forceNoCustomer)});\n\ |
|
|
\ }\n\n // Subscription can only be forced if the customer has an\ |
|
|
\ existing subscription\n if (stripeCustomer.subscriptions.data.length\ |
|
|
\ === 0) {\n throw new DataImportError({message: tpl(messages.forceNoExistingSubscription)});\n\ |
|
|
\ }\n\n // Subscription can only be forced if the customer does\ |
|
|
\ not have multiple subscriptions\n if (stripeCustomer.subscriptions.data.length\ |
|
|
\ > 1) {\n throw new DataImportError({message: tpl(messages.forceTooManySubscriptions)});\n\ |
|
|
\ }\n\n const stripeSubscription = stripeCustomer.subscriptions.data[0];\n\ |
|
|
\n // Subscription can only be forced if the existing subscription does\ |
|
|
\ not have multiple items\n if (stripeSubscription.items.data.length >\ |
|
|
\ 1) {\n throw new DataImportError({message: tpl(messages.forceTooManySubscriptionItems)});\n\ |
|
|
\ }\n\n const stripeSubscriptionItem = stripeSubscription.items.data[0];\n\ |
|
|
\ const stripeSubscriptionItemPrice = stripeSubscriptionItem.price;\n \ |
|
|
\ const stripeSubscriptionItemPriceCurrency = stripeSubscriptionItemPrice.currency;\n\ |
|
|
\ const stripeSubscriptionItemPriceAmount = stripeSubscriptionItemPrice.unit_amount;\n\ |
|
|
\ const stripeSubscriptionItemPriceType = stripeSubscriptionItemPrice.type;\n\ |
|
|
\ const stripeSubscriptionItemPriceInterval = stripeSubscriptionItemPrice.recurring?.interval\ |
|
|
\ || null;\n\n // Subscription can only be forced if the existing subscription\ |
|
|
\ has a recurring interval\n if (!stripeSubscriptionItemPriceInterval)\ |
|
|
\ {\n throw new DataImportError({message: tpl(messages.forceExistingSubscriptionNotRecurring)});\n\ |
|
|
\ }\n\n // Retrieve Ghost product\n let ghostProduct = await\ |
|
|
\ this._productRepository.get(\n {id: data.product_id},\n \ |
|
|
\ {...options, withRelated: ['stripePrices', 'stripeProducts']}\n );\n\ |
|
|
\n if (!ghostProduct) {\n throw new DataImportError({message:\ |
|
|
\ tpl(messages.productNotFound, {id: data.product_id})});\n }\n\n \ |
|
|
\ // If there is not a Stripe product associated with the Ghost product, ensure\ |
|
|
\ one is created before continuing\n if (!ghostProduct.related('stripeProducts').first())\ |
|
|
\ {\n // Even though we are not updating any information on the product,\ |
|
|
\ calling `ProductRepository.update`\n // will ensure that the product\ |
|
|
\ gets created in Stripe\n ghostProduct = await this._productRepository.update({\n\ |
|
|
\ id: data.product_id,\n name: ghostProduct.get('name'),\n\ |
|
|
\ // Providing the pricing details will ensure the relevant prices\ |
|
|
\ for the Ghost product are created\n // on the Stripe product\n\ |
|
|
\ monthly_price: {\n amount: ghostProduct.get('monthly_price'),\n\ |
|
|
\ currency: ghostProduct.get('currency')\n },\n\ |
|
|
\ yearly_price: {\n amount: ghostProduct.get('yearly_price'),\n\ |
|
|
\ currency: ghostProduct.get('currency')\n }\n\ |
|
|
\ }, options);\n }\n\n // Find price on Ghost product\ |
|
|
\ matching stripe subscription item price details\n const ghostProductPrice\ |
|
|
\ = ghostProduct.related('stripePrices').find((price) => {\n return\ |
|
|
\ price.get('currency') === stripeSubscriptionItemPriceCurrency &&\n \ |
|
|
\ price.get('amount') === stripeSubscriptionItemPriceAmount &&\n \ |
|
|
\ price.get('type') === stripeSubscriptionItemPriceType &&\n \ |
|
|
\ price.get('interval') === stripeSubscriptionItemPriceInterval;\n \ |
|
|
\ });\n\n let stripePriceId;\n let isNewStripePrice = false;\n\ |
|
|
\n if (!ghostProductPrice) {\n // If there is not a matching\ |
|
|
\ price, create one on the associated Stripe product using the existing\n \ |
|
|
\ // subscription item price details and update the stripe subscription\ |
|
|
\ to use it\n const stripeProduct = ghostProduct.related('stripeProducts').first();\n\ |
|
|
\n const newStripePrice = await this._stripeAPIService.createPrice({\n\ |
|
|
\ product: stripeProduct.get('stripe_product_id'),\n \ |
|
|
\ active: true,\n nickname: stripeSubscriptionItemPriceInterval\ |
|
|
\ === 'month' ? 'Monthly' : 'Yearly',\n currency: stripeSubscriptionItemPriceCurrency,\n\ |
|
|
\ amount: stripeSubscriptionItemPriceAmount,\n type:\ |
|
|
\ stripeSubscriptionItemPriceType,\n interval: stripeSubscriptionItemPriceInterval\n\ |
|
|
\ });\n\n await this._stripeAPIService.updateSubscriptionItemPrice(\n\ |
|
|
\ stripeSubscription.id,\n stripeSubscriptionItem.id,\n\ |
|
|
\ newStripePrice.id,\n {prorationBehavior: 'none'}\n\ |
|
|
\ );\n\n stripePriceId = newStripePrice.id;\n \ |
|
|
\ isNewStripePrice = true;\n } else {\n // If there is a matching\ |
|
|
\ price, and the subscription is not already using it,\n // update\ |
|
|
\ the subscription to use it\n stripePriceId = ghostProductPrice.get('stripe_price_id');\n\ |
|
|
\n if (stripeSubscriptionItem.price.id !== stripePriceId) {\n \ |
|
|
\ await this._stripeAPIService.updateSubscriptionItemPrice(\n \ |
|
|
\ stripeSubscription.id,\n stripeSubscriptionItem.id,\n\ |
|
|
\ stripePriceId,\n {prorationBehavior: 'none'}\n\ |
|
|
\ );\n }\n }\n\n // If there is a matching\ |
|
|
\ price, and the subscription is already using it, nothing else needs to be done\n\ |
|
|
\n return {\n stripePriceId,\n isNewStripePrice\n\ |
|
|
\ };\n }" |
|
|
- "getPrefetchedVariantTrack() {\n if (!this.prefetchedVariant_) {\n return\ |
|
|
\ null;\n }\n return shaka.util.StreamUtils.variantToTrack(this.prefetchedVariant_);\n\ |
|
|
\ }" |
|
|
- "function scaleAndAdd(out, a, b, scale) {\n out[0] = a[0] + b[0] * scale;\n\ |
|
|
\ out[1] = a[1] + b[1] * scale;\n return out;\n }" |
|
|
- source_sentence: '@returns Has this player been spotted by any others?' |
|
|
sentences: |
|
|
- "function includes7d( x, value ) {\n\tvar xbuf;\n\tvar dx0;\n\tvar dx1;\n\tvar\ |
|
|
\ dx2;\n\tvar dx3;\n\tvar dx4;\n\tvar dx5;\n\tvar dx6;\n\tvar sh;\n\tvar S0;\n\ |
|
|
\tvar S1;\n\tvar S2;\n\tvar S3;\n\tvar S4;\n\tvar S5;\n\tvar S6;\n\tvar sx;\n\t\ |
|
|
var ix;\n\tvar i0;\n\tvar i1;\n\tvar i2;\n\tvar i3;\n\tvar i4;\n\tvar i5;\n\t\ |
|
|
var i6;\n\n\t// Note on variable naming convention: S#, dx#, dy#, i# where # corresponds\ |
|
|
\ to the loop number, with `0` being the innermost loop...\n\n\t// Extract loop\ |
|
|
\ variables for purposes of loop interchange: dimensions and loop offset (pointer)\ |
|
|
\ increments...\n\tsh = x.shape;\n\tsx = x.strides;\n\tif ( strides2order( sx\ |
|
|
\ ) === 1 ) {\n\t\t// For row-major ndarrays, the last dimensions have the fastest\ |
|
|
\ changing indices...\n\t\tS0 = sh[ 6 ];\n\t\tS1 = sh[ 5 ];\n\t\tS2 = sh[ 4 ];\n\ |
|
|
\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 2 ];\n\t\tS5 = sh[ 1 ];\n\t\tS6 = sh[ 0 ];\n\t\ |
|
|
\tdx0 = sx[ 6 ]; // offset increment for innermost loop\n\t\tdx1\ |
|
|
\ = sx[ 5 ] - ( S0*sx[6] );\n\t\tdx2 = sx[ 4 ] - ( S1*sx[5] );\n\t\tdx3 = sx[\ |
|
|
\ 3 ] - ( S2*sx[4] );\n\t\tdx4 = sx[ 2 ] - ( S3*sx[3] );\n\t\tdx5 = sx[ 1 ] -\ |
|
|
\ ( S4*sx[2] );\n\t\tdx6 = sx[ 0 ] - ( S5*sx[1] ); // offset increment for outermost\ |
|
|
\ loop\n\t} else { // order === 'column-major'\n\t\t// For column-major ndarrays,\ |
|
|
\ the first dimensions have the fastest changing indices...\n\t\tS0 = sh[ 0 ];\n\ |
|
|
\t\tS1 = sh[ 1 ];\n\t\tS2 = sh[ 2 ];\n\t\tS3 = sh[ 3 ];\n\t\tS4 = sh[ 4 ];\n\t\ |
|
|
\tS5 = sh[ 5 ];\n\t\tS6 = sh[ 6 ];\n\t\tdx0 = sx[ 0 ]; // offset\ |
|
|
\ increment for innermost loop\n\t\tdx1 = sx[ 1 ] - ( S0*sx[0] );\n\t\tdx2 = sx[\ |
|
|
\ 2 ] - ( S1*sx[1] );\n\t\tdx3 = sx[ 3 ] - ( S2*sx[2] );\n\t\tdx4 = sx[ 4 ] -\ |
|
|
\ ( S3*sx[3] );\n\t\tdx5 = sx[ 5 ] - ( S4*sx[4] );\n\t\tdx6 = sx[ 6 ] - ( S5*sx[5]\ |
|
|
\ ); // offset increment for outermost loop\n\t}\n\t// Set a pointer to the first\ |
|
|
\ indexed element:\n\tix = x.offset;\n\n\t// Cache a reference to the input ndarray\ |
|
|
\ buffer:\n\txbuf = x.data;\n\n\t// Iterate over the ndarray dimensions...\n\t\ |
|
|
for ( i6 = 0; i6 < S6; i6++ ) {\n\t\tfor ( i5 = 0; i5 < S5; i5++ ) {\n\t\t\tfor\ |
|
|
\ ( i4 = 0; i4 < S4; i4++ ) {\n\t\t\t\tfor ( i3 = 0; i3 < S3; i3++ ) {\n\t\t\t\ |
|
|
\t\tfor ( i2 = 0; i2 < S2; i2++ ) {\n\t\t\t\t\t\tfor ( i1 = 0; i1 < S1; i1++ )\ |
|
|
\ {\n\t\t\t\t\t\t\tfor ( i0 = 0; i0 < S0; i0++ ) {\n\t\t\t\t\t\t\t\tif ( xbuf[\ |
|
|
\ ix ] === value ) {\n\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\ |
|
|
\t\t\t\t\tix += dx0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tix += dx1;\n\t\t\t\t\t\t\ |
|
|
}\n\t\t\t\t\t\tix += dx2;\n\t\t\t\t\t}\n\t\t\t\t\tix += dx3;\n\t\t\t\t}\n\t\t\t\ |
|
|
\tix += dx4;\n\t\t\t}\n\t\t\tix += dx5;\n\t\t}\n\t\tix += dx6;\n\t}\n\treturn\ |
|
|
\ false;\n}" |
|
|
- "_generateIntegrityFile(lockfile, patterns, flags, workspaceLayout, artifacts)\ |
|
|
\ {\n var _this3 = this;\n\n return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function*\ |
|
|
\ () {\n const result = (0, (_extends2 || _load_extends()).default)({}, INTEGRITY_FILE_DEFAULTS(),\ |
|
|
\ {\n artifacts\n });\n\n result.topLevelPatterns = patterns;\n\ |
|
|
\n // If using workspaces, we also need to add the workspaces patterns to\ |
|
|
\ the top-level, so that we'll know if a\n // dependency is added or removed\ |
|
|
\ into one of them. We must take care not to read the aggregator (if !loc).\n\ |
|
|
\ //\n // Also note that we can't use of workspaceLayout.workspaces[].manifest._reference.patterns,\ |
|
|
\ because when\n // doing a \"yarn check\", the _reference property hasn't\ |
|
|
\ yet been properly initialized.\n\n if (workspaceLayout) {\n result.topLevelPatterns\ |
|
|
\ = result.topLevelPatterns.filter(function (p) {\n // $FlowFixMe\n \ |
|
|
\ return !workspaceLayout.getManifestByPattern(p);\n });\n\n \ |
|
|
\ for (var _iterator4 = Object.keys(workspaceLayout.workspaces), _isArray4\ |
|
|
\ = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 :\ |
|
|
\ _iterator4[Symbol.iterator]();;) {\n var _ref5;\n\n if (_isArray4)\ |
|
|
\ {\n if (_i4 >= _iterator4.length) break;\n _ref5 = _iterator4[_i4++];\n\ |
|
|
\ } else {\n _i4 = _iterator4.next();\n if (_i4.done)\ |
|
|
\ break;\n _ref5 = _i4.value;\n }\n\n const name\ |
|
|
\ = _ref5;\n\n if (!workspaceLayout.workspaces[name].loc) {\n \ |
|
|
\ continue;\n }\n\n const manifest = workspaceLayout.workspaces[name].manifest;\n\ |
|
|
\n if (manifest) {\n for (var _iterator5 = (_constants ||\ |
|
|
\ _load_constants()).DEPENDENCY_TYPES, _isArray5 = Array.isArray(_iterator5),\ |
|
|
\ _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;)\ |
|
|
\ {\n var _ref6;\n\n if (_isArray5) {\n \ |
|
|
\ if (_i5 >= _iterator5.length) break;\n _ref6 = _iterator5[_i5++];\n\ |
|
|
\ } else {\n _i5 = _iterator5.next();\n \ |
|
|
\ if (_i5.done) break;\n _ref6 = _i5.value;\n \ |
|
|
\ }\n\n const dependencyType = _ref6;\n\n const dependencies\ |
|
|
\ = manifest[dependencyType];\n\n if (!dependencies) {\n \ |
|
|
\ continue;\n }\n\n for (var _iterator6 = Object.keys(dependencies),\ |
|
|
\ _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6\ |
|
|
\ : _iterator6[Symbol.iterator]();;) {\n var _ref7;\n\n \ |
|
|
\ if (_isArray6) {\n if (_i6 >= _iterator6.length) break;\n\ |
|
|
\ _ref7 = _iterator6[_i6++];\n } else {\n \ |
|
|
\ _i6 = _iterator6.next();\n if (_i6.done) break;\n\ |
|
|
\ _ref7 = _i6.value;\n }\n\n const\ |
|
|
\ dep = _ref7;\n\n result.topLevelPatterns.push(`${dep}@${dependencies[dep]}`);\n\ |
|
|
\ }\n }\n }\n }\n }\n\n result.topLevelPatterns.sort((_misc\ |
|
|
\ || _load_misc()).sortAlpha);\n\n if (flags.checkFiles) {\n result.flags.push('checkFiles');\n\ |
|
|
\ }\n\n if (flags.flat) {\n result.flags.push('flat');\n \ |
|
|
\ }\n\n if (_this3.config.ignoreScripts) {\n result.flags.push('ignoreScripts');\n\ |
|
|
\ }\n if (_this3.config.focus) {\n result.flags.push('focus:\ |
|
|
\ ' + _this3.config.focusedWorkspaceName);\n }\n\n if (_this3.config.production)\ |
|
|
\ {\n result.flags.push('production');\n }\n\n if (_this3.config.plugnplayEnabled)\ |
|
|
\ {\n result.flags.push('plugnplay');\n }\n\n const linkedModules\ |
|
|
\ = _this3.config.linkedModules;\n\n if (linkedModules.length) {\n \ |
|
|
\ result.linkedModules = linkedModules.sort((_misc || _load_misc()).sortAlpha);\n\ |
|
|
\ }\n\n for (var _iterator7 = Object.keys(lockfile), _isArray7 = Array.isArray(_iterator7),\ |
|
|
\ _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;)\ |
|
|
\ {\n var _ref8;\n\n if (_isArray7) {\n if (_i7 >= _iterator7.length)\ |
|
|
\ break;\n _ref8 = _iterator7[_i7++];\n } else {\n _i7\ |
|
|
\ = _iterator7.next();\n if (_i7.done) break;\n _ref8 = _i7.value;\n\ |
|
|
\ }\n\n const key = _ref8;\n\n result.lockfileEntries[key]\ |
|
|
\ = lockfile[key].resolved || '';\n }\n\n for (var _iterator8 = _this3._getModulesFolders({\ |
|
|
\ workspaceLayout }), _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8\ |
|
|
\ = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) {\n var _ref9;\n\ |
|
|
\n if (_isArray8) {\n if (_i8 >= _iterator8.length) break;\n \ |
|
|
\ _ref9 = _iterator8[_i8++];\n } else {\n _i8 = _iterator8.next();\n\ |
|
|
\ if (_i8.done) break;\n _ref9 = _i8.value;\n }\n\n \ |
|
|
\ const modulesFolder = _ref9;\n\n if (yield (_fs || _load_fs()).exists(modulesFolder))\ |
|
|
\ {\n result.modulesFolders.push(path.relative(_this3.config.lockfileFolder,\ |
|
|
\ modulesFolder));\n }\n }\n\n if (flags.checkFiles) {\n \ |
|
|
\ const modulesRoot = _this3._getModulesRootFolder();\n\n result.files\ |
|
|
\ = (yield _this3._getIntegrityListing({ workspaceLayout })).map(function (entry)\ |
|
|
\ {\n return path.relative(modulesRoot, entry);\n }).sort((_misc\ |
|
|
\ || _load_misc()).sortAlpha);\n }\n\n return result;\n })();\n \ |
|
|
\ }" |
|
|
- "get isSpotted() {\n return this.getProp(\"DT_BaseEntity\", \"m_bSpotted\"\ |
|
|
);\n }" |
|
|
- source_sentence: The toggle content, if left empty it will render the default toggle |
|
|
(seen above). |
|
|
sentences: |
|
|
- "update = () => {\n\n\t const timerId = window.requestAnimationFrame(\ |
|
|
\ update );\n\t const elapsed = performance.now() - timestamp;\n\t\ |
|
|
\ const progress = elapsed / duration;\n\t const opacity\ |
|
|
\ = 1.0 - progress > 0 ? 1.0 - progress : 0;\n\t const radius = progress\ |
|
|
\ * canvasWidth * 0.5 / dpr;\n\n\t context.clearRect( 0, 0, canvasWidth,\ |
|
|
\ canvasHeight );\n\t context.beginPath();\n\t context.arc(\ |
|
|
\ x, y, radius, 0, Math.PI * 2 );\n\t context.fillStyle = `rgba(${color.r\ |
|
|
\ * 255}, ${color.g * 255}, ${color.b * 255}, ${opacity})`;\n\t context.fill();\n\ |
|
|
\t context.closePath();\n\n\t if ( progress >= 1.0 ) {\n\ |
|
|
\n\t window.cancelAnimationFrame( timerId );\n\t \ |
|
|
\ this.updateCanvasArcByProgress( 0 );\n\n\t /**\n\t \ |
|
|
\ * Reticle ripple end event\n\t * @type {object}\n\t \ |
|
|
\ * @event Reticle#reticle-ripple-end\n\t */\n\t\ |
|
|
\ this.dispatchEvent( { type: 'reticle-ripple-end' } );\n\n\t \ |
|
|
\ }\n\n\t material.map.needsUpdate = true;\n\n\t }" |
|
|
- "static _headersDictToHeadersArray(headersDict) {\n const result = [];\n \ |
|
|
\ for (const name of Object.keys(headersDict)) {\n const values = headersDict[name].split('\\\ |
|
|
n');\n for (let i = 0; i < values.length; ++i) {\n result.push({name:\ |
|
|
\ name, value: values[i]});\n }\n }\n return result;\n }" |
|
|
- "function NavbarToggle() {\n\t (0, _classCallCheck3['default'])(this, NavbarToggle);\n\ |
|
|
\t return (0, _possibleConstructorReturn3['default'])(this, _React$Component.apply(this,\ |
|
|
\ arguments));\n\t }" |
|
|
pipeline_tag: sentence-similarity |
|
|
library_name: sentence-transformers |
|
|
--- |
|
|
|
|
|
# SentenceTransformer based on Shuu12121/CodeModernBERT-Crow-v1.1 |
|
|
|
|
|
This is a [sentence-transformers](https://www.SBERT.net) model finetuned from [Shuu12121/CodeModernBERT-Crow-v1.1](https://huggingface.co/Shuu12121/CodeModernBERT-Crow-v1.1). It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more. |
|
|
|
|
|
## Model Details |
|
|
|
|
|
### Model Description |
|
|
- **Model Type:** Sentence Transformer |
|
|
- **Base model:** [Shuu12121/CodeModernBERT-Crow-v1.1](https://huggingface.co/Shuu12121/CodeModernBERT-Crow-v1.1) <!-- at revision d7baa192c09e1e1da5c39fe9652ea9a4663084f6 --> |
|
|
- **Maximum Sequence Length:** 1024 tokens |
|
|
- **Output Dimensionality:** 768 dimensions |
|
|
- **Similarity Function:** Cosine Similarity |
|
|
<!-- - **Training Dataset:** Unknown --> |
|
|
<!-- - **Language:** Unknown --> |
|
|
<!-- - **License:** Unknown --> |
|
|
|
|
|
### Model Sources |
|
|
|
|
|
- **Documentation:** [Sentence Transformers Documentation](https://sbert.net) |
|
|
- **Repository:** [Sentence Transformers on GitHub](https://github.com/UKPLab/sentence-transformers) |
|
|
- **Hugging Face:** [Sentence Transformers on Hugging Face](https://huggingface.co/models?library=sentence-transformers) |
|
|
|
|
|
### Full Model Architecture |
|
|
|
|
|
``` |
|
|
SentenceTransformer( |
|
|
(0): Transformer({'max_seq_length': 1024, 'do_lower_case': False, 'architecture': 'ModernBertModel'}) |
|
|
(1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': True, 'pooling_mode_mean_tokens': False, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True}) |
|
|
) |
|
|
``` |
|
|
|
|
|
## Usage |
|
|
|
|
|
### Direct Usage (Sentence Transformers) |
|
|
|
|
|
First install the Sentence Transformers library: |
|
|
|
|
|
```bash |
|
|
pip install -U sentence-transformers |
|
|
``` |
|
|
|
|
|
Then you can load this model and run inference. |
|
|
```python |
|
|
from sentence_transformers import SentenceTransformer |
|
|
|
|
|
# Download from the 🤗 Hub |
|
|
model = SentenceTransformer("sentence_transformers_model_id") |
|
|
# Run inference |
|
|
sentences = [ |
|
|
'The toggle content, if left empty it will render the default toggle (seen above).', |
|
|
"function NavbarToggle() {\n\t (0, _classCallCheck3['default'])(this, NavbarToggle);\n\t return (0, _possibleConstructorReturn3['default'])(this, _React$Component.apply(this, arguments));\n\t }", |
|
|
"update = () => {\n\n\t const timerId = window.requestAnimationFrame( update );\n\t const elapsed = performance.now() - timestamp;\n\t const progress = elapsed / duration;\n\t const opacity = 1.0 - progress > 0 ? 1.0 - progress : 0;\n\t const radius = progress * canvasWidth * 0.5 / dpr;\n\n\t context.clearRect( 0, 0, canvasWidth, canvasHeight );\n\t context.beginPath();\n\t context.arc( x, y, radius, 0, Math.PI * 2 );\n\t context.fillStyle = `rgba(${color.r * 255}, ${color.g * 255}, ${color.b * 255}, ${opacity})`;\n\t context.fill();\n\t context.closePath();\n\n\t if ( progress >= 1.0 ) {\n\n\t window.cancelAnimationFrame( timerId );\n\t this.updateCanvasArcByProgress( 0 );\n\n\t /**\n\t * Reticle ripple end event\n\t * @type {object}\n\t * @event Reticle#reticle-ripple-end\n\t */\n\t this.dispatchEvent( { type: 'reticle-ripple-end' } );\n\n\t }\n\n\t material.map.needsUpdate = true;\n\n\t }", |
|
|
] |
|
|
embeddings = model.encode(sentences) |
|
|
print(embeddings.shape) |
|
|
# [3, 768] |
|
|
|
|
|
# Get the similarity scores for the embeddings |
|
|
similarities = model.similarity(embeddings, embeddings) |
|
|
print(similarities) |
|
|
# tensor([[ 1.0000, 0.6778, -0.0447], |
|
|
# [ 0.6778, 1.0000, 0.0303], |
|
|
# [-0.0447, 0.0303, 1.0000]]) |
|
|
``` |
|
|
|
|
|
<!-- |
|
|
### Direct Usage (Transformers) |
|
|
|
|
|
<details><summary>Click to see the direct usage in Transformers</summary> |
|
|
|
|
|
</details> |
|
|
--> |
|
|
|
|
|
<!-- |
|
|
### Downstream Usage (Sentence Transformers) |
|
|
|
|
|
You can finetune this model on your own dataset. |
|
|
|
|
|
<details><summary>Click to expand</summary> |
|
|
|
|
|
</details> |
|
|
--> |
|
|
|
|
|
<!-- |
|
|
### Out-of-Scope Use |
|
|
|
|
|
*List how the model may foreseeably be misused and address what users ought not to do with the model.* |
|
|
--> |
|
|
|
|
|
<!-- |
|
|
## Bias, Risks and Limitations |
|
|
|
|
|
*What are the known or foreseeable issues stemming from this model? You could also flag here known failure cases or weaknesses of the model.* |
|
|
--> |
|
|
|
|
|
<!-- |
|
|
### Recommendations |
|
|
|
|
|
*What are recommendations with respect to the foreseeable issues? For example, filtering explicit content.* |
|
|
--> |
|
|
|
|
|
## Training Details |
|
|
|
|
|
### Training Dataset |
|
|
|
|
|
#### Unnamed Dataset |
|
|
|
|
|
* Size: 2,392,064 training samples |
|
|
* Columns: <code>sentence_0</code>, <code>sentence_1</code>, and <code>label</code> |
|
|
* Approximate statistics based on the first 1000 samples: |
|
|
| | sentence_0 | sentence_1 | label | |
|
|
|:--------|:------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------|:--------------------------------------------------------------| |
|
|
| type | string | string | float | |
|
|
| details | <ul><li>min: 8 tokens</li><li>mean: 74.35 tokens</li><li>max: 1024 tokens</li></ul> | <ul><li>min: 11 tokens</li><li>mean: 182.37 tokens</li><li>max: 1024 tokens</li></ul> | <ul><li>min: 1.0</li><li>mean: 1.0</li><li>max: 1.0</li></ul> | |
|
|
* Samples: |
|
|
| sentence_0 | sentence_1 | label | |
|
|
|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-----------------| |
|
|
| <code>Set the column title<br><br>@param column - column number (first column is: 0)<br>@param title - new column title</code> | <code>setHeader = function(column, newValue) {<br> const obj = this;<br><br> if (obj.headers[column]) {<br> const oldValue = obj.headers[column].textContent;<br> const onchangeheaderOldValue = (obj.options.columns && obj.options.columns[column] && obj.options.columns[column].title) \|\| '';<br><br> if (! newValue) {<br> newValue = getColumnName(column);<br> }<br><br> obj.headers[column].textContent = newValue;<br> // Keep the title property<br> obj.headers[column].setAttribute('title', newValue);<br> // Update title<br> if (!obj.options.columns) {<br> obj.options.columns = [];<br> }<br> if (!obj.options.columns[column]) {<br> obj.options.columns[column] = {};<br> }<br> obj.options.columns[column].title = newValue;<br><br> setHistory.call(obj, {<br> action: 'setHeader',<br> column: column,<br> oldValue: oldValue,<br> newValue: newValue<br> });<br><br> // On onchange header<br> dispatch.c...</code> | <code>1.0</code> | |
|
|
| <code>Elsewhere this is known as a "Weak Value Map". Whereas a std JS WeakMap<br>is weak on its keys, this map is weak on its values. It does not retain these<br>values strongly. If a given value disappears, then the entries for it<br>disappear from every weak-value-map that holds it as a value.<br><br>Just as a WeakMap only allows gc-able values as keys, a weak-value-map<br>only allows gc-able values as values.<br><br>Unlike a WeakMap, a weak-value-map unavoidably exposes the non-determinism of<br>gc to its clients. Thus, both the ability to create one, as well as each<br>created one, must be treated as dangerous capabilities that must be closely<br>held. A program with access to these can read side channels though gc that do<br>not* rely on the ability to measure duration. This is a separate, and bad,<br>timing-independent side channel.<br><br>This non-determinism also enables code to escape deterministic replay. In a<br>blockchain context, this could cause validators to differ from each other,<br>preventing consensus, and thus preventing ...</code> | <code>makeFinalizingMap = (finalizer, opts) => {<br> const { weakValues = false } = opts \|\| {};<br> if (!weakValues \|\| !WeakRef \|\| !FinalizationRegistry) {<br> /** @type Map<K, V> */<br> const keyToVal = new Map();<br> return Far('fakeFinalizingMap', {<br> clearWithoutFinalizing: keyToVal.clear.bind(keyToVal),<br> get: keyToVal.get.bind(keyToVal),<br> has: keyToVal.has.bind(keyToVal),<br> set: (key, val) => {<br> keyToVal.set(key, val);<br> },<br> delete: keyToVal.delete.bind(keyToVal),<br> getSize: () => keyToVal.size,<br> });<br> }<br> /** @type Map<K, WeakRef<any>> */<br> const keyToRef = new Map();<br> const registry = new FinalizationRegistry(key => {<br> // Because this will delete the current binding of `key`, we need to<br> // be sure that it is not called because a previous binding was collected.<br> // We do this with the `unregister` in `set` below, assuming that<br> // `unregister` *immediately* suppresses the finalization of the thing<br> // it unregisters. TODO If this is...</code> | <code>1.0</code> | |
|
|
| <code>Creates a function that memoizes the result of `func`. If `resolver` is<br>provided, it determines the cache key for storing the result based on the<br>arguments provided to the memoized function. By default, the first argument<br>provided to the memoized function is used as the map cache key. The `func`<br>is invoked with the `this` binding of the memoized function.<br><br>**Note:** The cache is exposed as the `cache` property on the memoized<br>function. Its creation may be customized by replacing the `_.memoize.Cache`<br>constructor with one whose instances implement the<br>[`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object)<br>method interface of `delete`, `get`, `has`, and `set`.<br><br>@static<br>@memberOf _<br>@since 0.1.0<br>@category Function<br>@param {Function} func The function to have its output memoized.<br>@param {Function} [resolver] The function to resolve the cache key.<br>@returns {Function} Returns the new memoized function.<br>@example<br><br>var object = { 'a': 1, 'b': 2 };<br>var othe...</code> | <code>function memoize(func, resolver) {<br> if (typeof func != 'function' \|\| (resolver && typeof resolver != 'function')) {<br> throw new TypeError(FUNC_ERROR_TEXT);<br> }<br> var memoized = function() {<br> var args = arguments,<br> key = resolver ? resolver.apply(this, args) : args[0],<br> cache = memoized.cache;<br><br> if (cache.has(key)) {<br> return cache.get(key);<br> }<br> var result = func.apply(this, args);<br> memoized.cache = cache.set(key, result);<br> return result;<br> };<br> memoized.cache = new (memoize.Cache \|\| MapCache);<br> return memoized;<br> }</code> | <code>1.0</code> | |
|
|
* Loss: [<code>CachedMultipleNegativesSymmetricRankingLoss</code>](https://sbert.net/docs/package_reference/sentence_transformer/losses.html#cachedmultiplenegativessymmetricrankingloss) with these parameters: |
|
|
```json |
|
|
{ |
|
|
"scale": 20.0, |
|
|
"similarity_fct": "cos_sim", |
|
|
"mini_batch_size": 128, |
|
|
"gather_across_devices": false |
|
|
} |
|
|
``` |
|
|
|
|
|
### Training Hyperparameters |
|
|
#### Non-Default Hyperparameters |
|
|
|
|
|
- `per_device_train_batch_size`: 2048 |
|
|
- `per_device_eval_batch_size`: 2048 |
|
|
- `fp16`: True |
|
|
- `multi_dataset_batch_sampler`: round_robin |
|
|
|
|
|
#### All Hyperparameters |
|
|
<details><summary>Click to expand</summary> |
|
|
|
|
|
- `overwrite_output_dir`: False |
|
|
- `do_predict`: False |
|
|
- `eval_strategy`: no |
|
|
- `prediction_loss_only`: True |
|
|
- `per_device_train_batch_size`: 2048 |
|
|
- `per_device_eval_batch_size`: 2048 |
|
|
- `per_gpu_train_batch_size`: None |
|
|
- `per_gpu_eval_batch_size`: None |
|
|
- `gradient_accumulation_steps`: 1 |
|
|
- `eval_accumulation_steps`: None |
|
|
- `torch_empty_cache_steps`: None |
|
|
- `learning_rate`: 5e-05 |
|
|
- `weight_decay`: 0.0 |
|
|
- `adam_beta1`: 0.9 |
|
|
- `adam_beta2`: 0.999 |
|
|
- `adam_epsilon`: 1e-08 |
|
|
- `max_grad_norm`: 1 |
|
|
- `num_train_epochs`: 3 |
|
|
- `max_steps`: -1 |
|
|
- `lr_scheduler_type`: linear |
|
|
- `lr_scheduler_kwargs`: {} |
|
|
- `warmup_ratio`: 0.0 |
|
|
- `warmup_steps`: 0 |
|
|
- `log_level`: passive |
|
|
- `log_level_replica`: warning |
|
|
- `log_on_each_node`: True |
|
|
- `logging_nan_inf_filter`: True |
|
|
- `save_safetensors`: True |
|
|
- `save_on_each_node`: False |
|
|
- `save_only_model`: False |
|
|
- `restore_callback_states_from_checkpoint`: False |
|
|
- `no_cuda`: False |
|
|
- `use_cpu`: False |
|
|
- `use_mps_device`: False |
|
|
- `seed`: 42 |
|
|
- `data_seed`: None |
|
|
- `jit_mode_eval`: False |
|
|
- `use_ipex`: False |
|
|
- `bf16`: False |
|
|
- `fp16`: True |
|
|
- `fp16_opt_level`: O1 |
|
|
- `half_precision_backend`: auto |
|
|
- `bf16_full_eval`: False |
|
|
- `fp16_full_eval`: False |
|
|
- `tf32`: None |
|
|
- `local_rank`: 0 |
|
|
- `ddp_backend`: None |
|
|
- `tpu_num_cores`: None |
|
|
- `tpu_metrics_debug`: False |
|
|
- `debug`: [] |
|
|
- `dataloader_drop_last`: False |
|
|
- `dataloader_num_workers`: 0 |
|
|
- `dataloader_prefetch_factor`: None |
|
|
- `past_index`: -1 |
|
|
- `disable_tqdm`: False |
|
|
- `remove_unused_columns`: True |
|
|
- `label_names`: None |
|
|
- `load_best_model_at_end`: False |
|
|
- `ignore_data_skip`: False |
|
|
- `fsdp`: [] |
|
|
- `fsdp_min_num_params`: 0 |
|
|
- `fsdp_config`: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False} |
|
|
- `fsdp_transformer_layer_cls_to_wrap`: None |
|
|
- `accelerator_config`: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None} |
|
|
- `deepspeed`: None |
|
|
- `label_smoothing_factor`: 0.0 |
|
|
- `optim`: adamw_torch |
|
|
- `optim_args`: None |
|
|
- `adafactor`: False |
|
|
- `group_by_length`: False |
|
|
- `length_column_name`: length |
|
|
- `ddp_find_unused_parameters`: None |
|
|
- `ddp_bucket_cap_mb`: None |
|
|
- `ddp_broadcast_buffers`: False |
|
|
- `dataloader_pin_memory`: True |
|
|
- `dataloader_persistent_workers`: False |
|
|
- `skip_memory_metrics`: True |
|
|
- `use_legacy_prediction_loop`: False |
|
|
- `push_to_hub`: False |
|
|
- `resume_from_checkpoint`: None |
|
|
- `hub_model_id`: None |
|
|
- `hub_strategy`: every_save |
|
|
- `hub_private_repo`: None |
|
|
- `hub_always_push`: False |
|
|
- `hub_revision`: None |
|
|
- `gradient_checkpointing`: False |
|
|
- `gradient_checkpointing_kwargs`: None |
|
|
- `include_inputs_for_metrics`: False |
|
|
- `include_for_metrics`: [] |
|
|
- `eval_do_concat_batches`: True |
|
|
- `fp16_backend`: auto |
|
|
- `push_to_hub_model_id`: None |
|
|
- `push_to_hub_organization`: None |
|
|
- `mp_parameters`: |
|
|
- `auto_find_batch_size`: False |
|
|
- `full_determinism`: False |
|
|
- `torchdynamo`: None |
|
|
- `ray_scope`: last |
|
|
- `ddp_timeout`: 1800 |
|
|
- `torch_compile`: False |
|
|
- `torch_compile_backend`: None |
|
|
- `torch_compile_mode`: None |
|
|
- `include_tokens_per_second`: False |
|
|
- `include_num_input_tokens_seen`: False |
|
|
- `neftune_noise_alpha`: None |
|
|
- `optim_target_modules`: None |
|
|
- `batch_eval_metrics`: False |
|
|
- `eval_on_start`: False |
|
|
- `use_liger_kernel`: False |
|
|
- `liger_kernel_config`: None |
|
|
- `eval_use_gather_object`: False |
|
|
- `average_tokens_across_devices`: False |
|
|
- `prompts`: None |
|
|
- `batch_sampler`: batch_sampler |
|
|
- `multi_dataset_batch_sampler`: round_robin |
|
|
- `router_mapping`: {} |
|
|
- `learning_rate_mapping`: {} |
|
|
|
|
|
</details> |
|
|
|
|
|
### Training Logs |
|
|
| Epoch | Step | Training Loss | |
|
|
|:------:|:----:|:-------------:| |
|
|
| 0.4281 | 500 | 0.3784 | |
|
|
| 0.8562 | 1000 | 0.1367 | |
|
|
| 1.2842 | 1500 | 0.0707 | |
|
|
| 1.7123 | 2000 | 0.0456 | |
|
|
| 2.1404 | 2500 | 0.0344 | |
|
|
| 2.5685 | 3000 | 0.0143 | |
|
|
| 2.9966 | 3500 | 0.0136 | |
|
|
|
|
|
|
|
|
### Framework Versions |
|
|
- Python: 3.10.12 |
|
|
- Sentence Transformers: 5.1.0 |
|
|
- Transformers: 4.55.3 |
|
|
- PyTorch: 2.7.0+cu128 |
|
|
- Accelerate: 1.7.0 |
|
|
- Datasets: 3.6.0 |
|
|
- Tokenizers: 0.21.4 |
|
|
|
|
|
## Citation |
|
|
|
|
|
### BibTeX |
|
|
|
|
|
#### Sentence Transformers |
|
|
```bibtex |
|
|
@inproceedings{reimers-2019-sentence-bert, |
|
|
title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks", |
|
|
author = "Reimers, Nils and Gurevych, Iryna", |
|
|
booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing", |
|
|
month = "11", |
|
|
year = "2019", |
|
|
publisher = "Association for Computational Linguistics", |
|
|
url = "https://arxiv.org/abs/1908.10084", |
|
|
} |
|
|
``` |
|
|
|
|
|
<!-- |
|
|
## Glossary |
|
|
|
|
|
*Clearly define terms in order to be accessible across audiences.* |
|
|
--> |
|
|
|
|
|
<!-- |
|
|
## Model Card Authors |
|
|
|
|
|
*Lists the people who create the model card, providing recognition and accountability for the detailed work that goes into its construction.* |
|
|
--> |
|
|
|
|
|
<!-- |
|
|
## Model Card Contact |
|
|
|
|
|
*Provides a way for people who have updates to the Model Card, suggestions, or questions, to contact the Model Card authors.* |
|
|
--> |