Is there a way to pass selectable token ids in kerasNLP? - tensorflow

I was trying to use KerasNLP for a project. Specifically, I wanted to apply masking to the input data I have. However, I wanted to mask specific tokens, not random tokens. When using KerasNLP, I can pass which tokens it should not select when masking (unselectable_token_ids), but I don't see any option to pass selectable token ids.
Consider the example below,
masker = keras_nlp.layers.MLMMaskGenerator(
vocabulary_size=10, mask_selection_rate=0.4, mask_token_id=0,
mask_selection_length=5)
I defined my MaskGenerator as follows, then called the masker with the following input data. As can be seen, one token is already masked, and I want to get its position
masker(tf.constant([1, 2, 3, 0, 5]))
However, the output of the MLMMaskGenerator doesn't get the position of the already masked token. That is, it only masked 2 and 5. Is there any way I can force kerasNLP to select it?

Related

Algolia vue-instantsearch : disjunction between two distincts facets

Using algolia vue-instantsearch, i’m encountering a special case and i’m having an hard time finding a solution.
Refinement behaviors is that you get the results that matches all your refinement filters.
If i filter on a brand and a price, i’ll get the results that matches both the brand and the price.
I need to add some specific filters that work differently. I would like to be able to say “returns me the results that matches either refinementA, or refinementB, or refinementC.”
The reason is that those refinements are checking fields that are not present on all the products.
If i check a value for refinementA, i want to keep all the results that has no value for field corresponding to refinementA, but remove those that has a value for refinementA that does not match with the one i filtered one.
Im thinking about handling myself some inputs instead of ias-components, and modifying by hand each query that is send to algolia by checking the value of my own inputs when searchFunction is triggered (https://www.algolia.com/doc/api-reference/widgets/instantsearch/js/#widget-param-searchfunction).
I did not found yet how i can trigger a search from an non-vue-instantsearch input event, and i’m not sure how the above solution could affect the internal working of vue-instantsearch.
I’m looking for feedbacks about a more standard way of doing this, or for any advices !
I got the answer by exchanging with a vue-instantsearch maintainer.
vue-instantsearch does not provide any option to do it.
A workaround is to overwrite algoliasearch search method, that is used under the hood by vue-instant-search.
const client = algoliasearch('', '');
const originalSearch = client.search;
client.search = function search(queries) { ... }
More informations in this github issue : https://github.com/algolia/vue-instantsearch/issues/1102

API additional id,

I'm trying to get data from my limesurvey and wonder why in API request I need to pass id: 1 as the third body parameter.
{method:'get_session_key',params:['myusername','mypassword'],id:1}
If I omit id or pass id:0, I will get the response data with an empty string. I can put any positive and negative integers there and I don't know exactly why it is required.
I'm following instructions on RemoteControl 2 API
That's the request id.
On the jsonRPCClient (component outside of LS) code it is fixed to 1.
I think it is part of a standard to use notifications, which are not used on LS API.
So, just fix it to 1 :)

Is there a function in Archer that could draw a line separating two outputs in a single field?

I am trying to concatenate 2 outputs in calculated text field. But I would like to draw a line in between them or at least give them a heading, so that the users will be able to identify them easily. I could make different fields and have them calculated. But the requirement is to concatenate 15 fields into one field. So, I do not want to create 15 fields and write separate calcs. See below example
Example 1)
Hello, this is an example of what I am trying to explain with an example (o/p 1)
Hello, this is how I would like to present to the end users avoiding confusion (o/p 2)
As you see above, I was able to concatenate 2 o/p's, but I would like to draw a line. This one scenario that would work for me.
Example 2)enter image description here
Users Watch
Hello, this is an example of what I am trying to explain with an example (o/p 1)
Admin Watch
Hello, this is how I would like to present to the end users avoiding confusion (o/p 2)
As you see in 2nd example, I would like to put a heading for o/p 1 as "users watch" and "Admin Watch" for o/p 2, so that the users can differentiate it.
I have tried sub-string function for example 2, it looks 'OK' but it would be of more help if anyone has better solution.
The beauty of Archer is that you can use HTML in the calculation; providing that the calculated field is a text field and that its display is set as text area.
You can use the following calculation:
CONCATENATE("<H3>Header 1</H3>", [Field 1], "<H3>Header 2</H3>", [Field 2])

Iterating threw input elements that have almost similar names

I am working with vue.js and I have a form that has a lot of inputs, the number of inputs in the form is never the same because I have a couple of areas where the user can add inputs when they want to. the inputs that get added have the same name but differ from a counter.
I have built a method that is going to submit the form and the inputs that are not changed in the form get pulled with this code:
getFormValues (submitEvent) {
debugger;
this.Nr = submitEvent.target.elements.Nr.value
}
but the problem here is that I don't know how to get all the values of inputs with the same name but with different id values so I can iterate threw then and build objects to post in the backend, I don't know how many of thus input is going to be added.

Is it possible to compare 2 dimensions in a Google Analytics query filter?

I'm just starting out with the Google Analytics API and am wondering if it's possible to compare two dimensions via an operand in the filters I pass in the query. And by wondering I mean I've tried it, but have had no success.
Specifically I'm trying to compare 2 custom variable values. One holds the user who created a post (customVarValue3), the other the user who is viewing the post (customVarValue5). I want to get the pageviews only for the visitors who are not also the creator. The filter looks like this (without urlencoding applied):
ga:customVarValue3!=ga:customVarValue5
The full query (url encoded) looks like this:
https://www.google.com/analytics/feeds/data?ids=ga%3Axxxxxx&dimensions=ga%3AcustomVarValue1%2Cga%3AcustomVarValue2%2Cga%3AcustomVarValue3&metrics=ga%3Apageviews&filters=ga%3AcustomVarValue3!%3Dga%3AcustomVarValue5&sort=-ga%3Apageviews&start-date=2012-02-09&end-date=2012-02-23&max-results=50
However, it returns the same results (and I know there are results where ga:customVarValue3 == ga:customVarValue5).
Probably it isn't possible, but I just wanted to see if anyone knew how to achieve this or has a workaround or something.
No, it is not possible using the GAv3 API in its present state. You can, however, get all the results by using the specified two custom variables as the dimensions for a report, and programmatically filter out the unnecessary results.
Some simple construct like
for(var item in collatedResultsListwithDimensions) {
for(var row in item.rows) {
if(row[0]!=row[1])
newResultRows.push(row);
}
}
Now your newResultRows will have those rows where row[1]!=row[0] assuming the two custom variables you mentioned are the first two dimensions.