plison / opendial Goto Github PK
View Code? Open in Web Editor NEWA generic Java toolkit for building dialogue systems
A generic Java toolkit for building dialogue systems
Hi, i'm learning from your code, and find that the below function seems to have an useless parameter newNodeId,please check it.
protected void modifyVariableId(String oldNodeId, String newNodeId) {
if (inputNodes.containsKey(oldNodeId)) {
BNode inputNode = inputNodes.get(oldNodeId);
removeInputNode_internal(oldNodeId);
addInputNode_internal(inputNode);
}
else if (outputNodes.containsKey(oldNodeId)) {
BNode outputNode = outputNodes.get(oldNodeId);
removeOutputNode_internal(oldNodeId);
addOutputNode_internal(outputNode);
}
}
Dear,
How to train the parameters with wizard data? Could you give me some examples?
What steps will reproduce the problem?
1. Load Nuance, in this case through a domain's XML setting
2. Attempt speech recognition
What is the expected output? What do you see instead?
Expected output is the guessed text obtained from Nuance, instead nothing
appears and an exception is raised in the terminal from thread 'Thread-23' with
a NullPointerException being raised at
opendial.plugins.NuanceSpeech.recognise(NuanceSpeech.java:215).
Nuance works fine if first something is input by keyboard, upon which Nuance
responds by speech.
What version of the product are you using? On what operating system?
Ubuntu 12.04, opendial 1.1.
Original issue reported on code.google.com by [email protected]
on 26 Feb 2015 at 1:04
I've tried to use opendial in a Maven project. However, I could not resolve the required dependencies.
This is the pom.xml that I've used:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test.dialog</groupId>
<artifactId>dialog-system-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Simple Maven Project</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>opendial</groupId>
<artifactId>opendial</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Java compiler source code version -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>bintray</name>
<url>http://jcenter.bintray.com</url>
</repository>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>bintray</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>bintray-plugins</name>
<url>http://jcenter.bintray.com</url>
</pluginRepository>
</pluginRepositories>
</project>
Running mvn package yields:
mvn -U package
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for test.dialog:dialog-system-demo:jar:1.0-SNAPSHOT
[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-source-plugin is missing. @ line 75, column 12
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Simple Maven Project 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://jcenter.bintray.com/org/apache/maven/plugins/maven-source-plugin/maven-metadata.xml
Downloaded: http://jcenter.bintray.com/org/apache/maven/plugins/maven-source-plugin/maven-metadata.xml (808 B at 4.1 KB/sec)
Downloading: http://jcenter.bintray.com/org/apache/httpcomponents/httpclient/4.3+/httpclient-4.3+.pom
Downloading: https://oss.sonatype.org/content/repositories/snapshots/org/apache/httpcomponents/httpclient/4.3+/httpclient-4.3+.pom
Downloading: http://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.3+/httpclient-4.3+.pom
[WARNING] The POM for org.apache.httpcomponents:httpclient:jar:4.3+ is missing, no dependency information available
Downloading: http://jcenter.bintray.com/org/apache/httpcomponents/httpmime/4.3+/httpmime-4.3+.pom
Downloading: https://oss.sonatype.org/content/repositories/snapshots/org/apache/httpcomponents/httpmime/4.3+/httpmime-4.3+.pom
Downloading: http://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.3+/httpmime-4.3+.pom
[WARNING] The POM for org.apache.httpcomponents:httpmime:jar:4.3+ is missing, no dependency information available
Downloading: http://jcenter.bintray.com/net/java/balloontip/balloontip/1.2+/balloontip-1.2+.pom
Downloading: https://oss.sonatype.org/content/repositories/snapshots/net/java/balloontip/balloontip/1.2+/balloontip-1.2+.pom
Downloading: http://repo.maven.apache.org/maven2/net/java/balloontip/balloontip/1.2+/balloontip-1.2+.pom
[WARNING] The POM for net.java.balloontip:balloontip:jar:1.2+ is missing, no dependency information available
Downloading: http://jcenter.bintray.com/org/jfree/jfreechart/1.0.19+/jfreechart-1.0.19+.pom
Downloading: https://oss.sonatype.org/content/repositories/snapshots/org/jfree/jfreechart/1.0.19+/jfreechart-1.0.19+.pom
Downloading: http://repo.maven.apache.org/maven2/org/jfree/jfreechart/1.0.19+/jfreechart-1.0.19+.pom
[WARNING] The POM for org.jfree:jfreechart:jar:1.0.19+ is missing, no dependency information available
Downloading: http://jcenter.bintray.com/de/dfki/mary/freetts/1.0/freetts-1.0.pom
Downloading: https://oss.sonatype.org/content/repositories/snapshots/de/dfki/mary/freetts/1.0/freetts-1.0.pom
Downloading: http://repo.maven.apache.org/maven2/de/dfki/mary/freetts/1.0/freetts-1.0.pom
Downloading: file://${project.basedir}/../lib/repo/de/dfki/mary/freetts/1.0/freetts-1.0.pom
Downloading: http://jcenter.bintray.com/de/dfki/mary/freetts-de/1.0/freetts-de-1.0.pom
Downloading: https://oss.sonatype.org/content/repositories/snapshots/de/dfki/mary/freetts-de/1.0/freetts-de-1.0.pom
Downloading: http://repo.maven.apache.org/maven2/de/dfki/mary/freetts-de/1.0/freetts-de-1.0.pom
Downloading: file://${project.basedir}/../lib/repo/de/dfki/mary/freetts-de/1.0/freetts-de-1.0.pom
Downloading: http://jcenter.bintray.com/de/dfki/mary/freetts-en_us/1.0/freetts-en_us-1.0.pom
Downloading: https://oss.sonatype.org/content/repositories/snapshots/de/dfki/mary/freetts-en_us/1.0/freetts-en_us-1.0.pom
Downloading: http://repo.maven.apache.org/maven2/de/dfki/mary/freetts-en_us/1.0/freetts-en_us-1.0.pom
[WARNING] The POM for edu.cmu.sphinx:sphinx4-core:jar:1.0-SNAPSHOT is missing, no dependency information available
Downloading: https://oss.sonatype.org/content/repositories/snapshots/org/slf4j/jul-to-slf4j/maven-metadata.xml
Downloading: http://repo.maven.apache.org/maven2/org/slf4j/jul-to-slf4j/maven-metadata.xml
Downloading: http://jcenter.bintray.com/org/slf4j/jul-to-slf4j/maven-metadata.xml
Downloaded: http://repo.maven.apache.org/maven2/org/slf4j/jul-to-slf4j/maven-metadata.xml (2 KB at 121.9 KB/sec)
Downloaded: http://jcenter.bintray.com/org/slf4j/jul-to-slf4j/maven-metadata.xml (2 KB at 14.1 KB/sec)
Downloading: https://oss.sonatype.org/content/repositories/snapshots/org/slf4j/slf4j-api/maven-metadata.xml
Downloading: http://jcenter.bintray.com/org/slf4j/slf4j-api/maven-metadata.xml
Downloading: http://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/maven-metadata.xml
Downloaded: http://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/maven-metadata.xml (2 KB at 165.9 KB/sec)
Downloaded: http://jcenter.bintray.com/org/slf4j/slf4j-api/maven-metadata.xml (2 KB at 22.2 KB/sec)
Downloading: https://oss.sonatype.org/content/repositories/snapshots/org/slf4j/slf4j-log4j12/maven-metadata.xml
Downloading: http://jcenter.bintray.com/org/slf4j/slf4j-log4j12/maven-metadata.xml
Downloaded: http://repo.maven.apache.org/maven2/org/slf4j/slf4j-log4j12/maven-metadata.xml (3 KB at 184.7 KB/sec)
Downloaded: http://jcenter.bintray.com/org/slf4j/slf4j-log4j12/maven-metadata.xml (3 KB at 25.3 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.473s
[INFO] Finished at: Thu Jun 02 11:55:40 CEST 2016
[INFO] Final Memory: 8M/302M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project dialog-system-demo: Could not resolve dependencies for project test.dialog:dialog-system-demo:jar:1.0-SNAPSHOT: Failed to collect dependencies at opendial:opendial:jar:1.4 -> de.dfki.mary:marytts-runtime:jar:5.1.1 -> de.dfki.mary:freetts:jar:1.0: Failed to read artifact descriptor for de.dfki.mary:freetts:jar:1.0: Could not transfer artifact de.dfki.mary:freetts:pom:1.0 from/to marytts-dependencies (file://${project.basedir}/../lib/repo): Repository path /../lib/repo does not exist, and cannot be created. -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
Could you provide a sample pom.xml that works?
The reason is simple.
getNBest(1) is called by getBest, which makes sense because if you want the
best, then just get the first one.
But the return value of getNBest pushes the table of best values through the
Map constructor of CategoricalTable. If the probabilities of CategoricalTable
do not add up to 1, it adds the "None" value with 1.0f - total_probabilities.
getBest receives a CategoricalTable that has gone through the map constructor.
It returns nbest.getRows().iterator().next(), which looks like only one row is
expected in the table.
The assumption that only one row is in the table is wrong though, because the
copy constructor adds a second row with the value of "None" with some
probability. Sometimes, regardless of what probability "None" has,
nbest.getRows().iterator().next() returns "None" instead of what ever the best
is.
As a quick fix I added:
public CategoricalTable(Map<Assignment,Double> headTable, boolean forceBest) {
this();
for (Assignment a : headTable.keySet()) {
addRow(a, 1f);
}
}
and modified getNBest to return:
if(nbest == 1) return new CategoricalTable(filteredTable,true);
return new CategoricalTable(filteredTable);
Original issue reported on code.google.com by [email protected]
on 5 May 2014 at 2:12
Hi.
I have a question concerning relational structures. It appears it is not possible to define multiple relationships of the same type depending by the same node. For example, the statement "[John likes>chocolate likes>mint]" produces the structure "[John likes>mint]". While it is easy to get around this by using "[John likes1>chocolate likes2>mint]" and then query it by "John likes{_}>{X}", this is obviously a hack. Is this constraint intended or am I missing something?
Thank you!
The above error is thrown when I load a custom domain.xml file with the following if statements within a rule:
But according to http://www.opendial-toolkit.net/user-manual/dialogue-domains, the "<" and ">" characters should be usable as relations.
It is the case that when < or > exist a s variables or values, this same exception is thrown. It is probably the case that a general XML check is performed on all variables and this exception thrown when < or > is found, even in this less common case for if statements.
https://code.google.com/p/opendial/wiki/SpeechRecognitionAndSynthesis states
<settings>
<modules>opendial.plugins.NuanceSpeech</modules>
<id>application_id</id>
<key>application_key</secret>
<lang>language_code</lang>
</settings>
It should be <key>application_key</key>.
Original issue reported on code.google.com by [email protected]
on 26 Feb 2015 at 12:58
I registered for an AT&T API account, created and App, and got an App Key and
App Secret number. When I try to run OpenDial with the ATT module, following
the guidelines in the wiki (ant run -Dmodules=opendial.plugins.ATTSpeech -Did=?
-Dsecret=?)
the ATT module complains of having a "key" parameter missing, and when I run it
with
ant run -Dmodules=opendial.plugins.ATTSpeech -Dkey=? -Dsecret=? the module will
complain of the pair key and secret even if they are correct.
Original issue reported on code.google.com by [email protected]
on 17 Feb 2015 at 7:56
To extract the domain now we have to pass a path string:
Domain dialogueDomain = XMLDomainReader.extractDomain("path-to-topDomainFile");
But it would be useful to pass a File. May be the XMLs are downloaded from database and put them in Java temp File. Then it would be easy to code whether the XMLs are in the file system or not.
Thanks,
Sayef
I have attached the dialogue domain file "test-dialog.xml". When I run with
OpenDial I am getting unexpected behaviour. I expect that the system should
echo the input from the user when it is one of the given actions (wave, jump,
hands_up). However when the count variable reaches 3 it should set "a_m" to
"Finish" on receiving one of the actions and then the system should say the
game is over and suggests playing something else.
Instead I get the interaction shown in "out.xml". The interaction runs as
expected for the first 3 utterances. However on the 4th utterance the system
says the action string "Finish", instead of saying the utterance "OK we had 3
goes, let's do something else now!" as specified. In the following utterances
the system continues to echo back the actions, even though the condition
specified in the domain XML says this should only take place when count is less
than 3.
Please can you let me know what is happening? Is this an error in my dialogue
domain or a bug in OpenDial?
Thanks,
Sam
Original issue reported on code.google.com by [email protected]
on 31 Oct 2014 at 10:03
Attachments:
Running ant test
on a headless system (e.g., a Travis CI worker, but also our local compute cluster) results in errors:
test-run:
[junit] Running opendial.bn.AssignmentTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.069 sec
[junit] Running opendial.bn.BNetworkStructureTest
[junit] Tests run: 10, Failures: 0, Errors: 0, Time elapsed: 0.208 sec
[junit] Running opendial.bn.DistributionsTest
[junit] Tests run: 15, Failures: 0, Errors: 0, Time elapsed: 1.494 sec
[junit] Running opendial.bn.ValueTest
[junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.163 sec
[junit] Running opendial.domains.DemoTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 3.764 sec
[junit] Running opendial.domains.DialogueStateTest
[junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 1.533 sec
[junit] Running opendial.domains.FlightBookingTest
[junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 1.587 sec
[junit] Running opendial.domains.LearningTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 1.532 sec
[junit] Running opendial.domains.ParametersTest
[junit] Tests run: 6, Failures: 0, Errors: 0, Time elapsed: 2.186 sec
[junit] Running opendial.domains.PruningTest
[junit] Tests run: 9, Failures: 0, Errors: 0, Time elapsed: 0.896 sec
[junit] Running opendial.domains.RuleTest1
[junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 2.144 sec
[junit] Running opendial.domains.RuleTest2
[junit] Tests run: 6, Failures: 0, Errors: 0, Time elapsed: 1.772 sec
[junit] Running opendial.domains.RuleTest3
[junit] Tests run: 5, Failures: 0, Errors: 0, Time elapsed: 1.639 sec
[junit] Running opendial.domains.StepByStepTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 2.025 sec
[junit] Running opendial.domains.TemplateStringTest
[junit] Tests run: 15, Failures: 0, Errors: 0, Time elapsed: 0.324 sec
[junit] Running opendial.inference.IncrementalTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.63 sec
[junit] Running opendial.inference.InferenceLargeScaleTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 6.76 sec
[junit] Running opendial.inference.InferenceTest
[junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 1.715 sec
[junit] Running opendial.inference.NetworkReductionTest
[junit] Tests run: 5, Failures: 0, Errors: 0, Time elapsed: 1.843 sec
[junit] Running opendial.modules.ConnectorTest
[junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.84 sec
[junit] Running opendial.modules.ImporterTest
[junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 4.652 sec
[junit] Running opendial.modules.PlanningTest
[junit] Tests run: 5, Failures: 0, Errors: 0, Time elapsed: 1.204 sec
[junit] Running opendial.modules.RecordingTest
[junit] Tests run: 2, Failures: 0, Errors: 1, Time elapsed: 3.575 sec
BUILD FAILED
Also for WizardTest
.
It would be good if those two tests would check for headless mode and adapt.
What steps will reproduce the problem?
1. Typing in the chat window when having reached bottom of page.
What is the expected output? What do you see instead?
I expect to see what I have typed in and the answer. However, the screen does
not scroll automatically, which one would expect in most cases.
What version of the product are you using? On what operating system?
1.0 on Mac OS X Yosemite 10.10
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 29 Oct 2014 at 3:06
Here are some words I can find on the open-dial website:
The rules are essentially high-level templates for probabilistic models. They provide an abstraction layer that allows the system designer to capture the domain in a concise and human-readable form, with a limited number of parameters. In other words, OpenDial can be seen as following a "structured POMDP" approach to dialogue.
From my point of view, a POMDP-based SDS should be able to easily transfer from one dialogue state to another, but it seems that open-dial has built a strict structure for the dialogue, what means it is more similar to a hand-crafted rule based SDS, although it can deal with some uncertainty from the automated speech recognition system.
Therefore, is it more an improved rule-based system than a POMDP-like system?
In https://code.google.com/p/opendial/wiki/DialogueDomains#4._Models
In table "XML format for <if .../>:" Change in 3th line "var" to "value"
Original issue reported on code.google.com by [email protected]
on 18 Oct 2014 at 1:06
The plugin requires one parameter:
- "grammar" is the path to the recognition grammar in JSGF format
I think it's also a good idea to provide parameters for acoustic model and dictionary (maybe also via domain specification), instead of hard-coding these variables in SphinxASR.java
.
(For example, in our project we need to use multiple models and dictionaries and switch between them. )
It seems that over in our talking elevator project, the EditorTab cannot find the Domain file, as shown by our log output (enhanced with a stacktrace, FWIW):
[OpenDial] INFO: Module ModuleElla successfully attached
[OpenDial] INFO: Module AudioModule successfully attached
[OpenDial] INFO: Acoustic model: resource:/edu/cmu/sphinx/models/en-us/en-us
[OpenDial] INFO: Dictionary: resource:/grammar_en/ella_en.dict
[OpenDial] INFO: Recognition grammar: resource:/grammar_en/compact_gram.gram
[OpenDial] SEVERE: cannot read xml file: java.io.FileNotFoundException: Domain_Opendial_Ella.xml (No such file or directory)
java.io.FileNotFoundException: Domain_Opendial_Ella.xml (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileReader.<init>(FileReader.java:72)
at opendial.gui.EditorTab.rereadFile(EditorTab.java:199)
at opendial.gui.EditorTab.refresh(EditorTab.java:167)
at opendial.gui.EditorTab.<init>(EditorTab.java:142)
at opendial.gui.GUIFrame.start(GUIFrame.java:155)
at opendial.DialogueSystem.startSystem(DialogueSystem.java:148)
at OpenDialDemo.main(OpenDialDemo.java:33)
Note that everything else is working well -- the main DialogSystem is finding the Domain file without problems.
So this is a low-priority issue; just wanted to point it out.
Hi Pierre:
Is there any repository (like jCenter) that contains OpenDial?
In our project we use Gradle to handle dependencies and we want such online repository so that it can conveniently bring OpenDial in.
Consider the following rule in a domain file (model is triggered by "Speech"):
<rule id="rule1"> <case> <condition> <if var="Speech" value="okay"/> </condition> <set var="System_Speech" value="excellent"/> <set var="Speech" value="okay"/> </effect> </case> </rule>
While this is a poorly constructed rule (obviously, the second "set" line was leftover or copied from something), it will cause an infinite loop in opendial, as setting Speech to "okay" triggers the speech, and the contents satisfies the rule, which then runs again. Either this potentially common error could be documented (it may already be, I admit I haven't been through everything), or perhaps a check within opendial could be thrown that a rule shouldn't set variables with values that are already set in the condition.
Hi, I have a strange problem with the VAD component:
I tried to use the Sphinx ASR, and now it can successfully recognize my speech. However if I use the VAD (by clicking the check box in the speech panel), the system does not process my speech after it is recognized.
For example:
[system]
Welcome to our Norwegian flight-booking system!
[system]
What is your destination?
[user]
MOSS
Then it stops, without further output. But if I use the textbox as input, everything goes fine.
So is this a bug of the VAD component? Thanks!
https://sites.google.com/site/opendialtoolkit?pli=1
Moved to another place?
In https://code.google.com/p/opendial/wiki/DialogueDomains#3._Parameters
The XML example do not correspond to the text. See N(2,4):
Gaussian distributions[1] are defined with two parameters mean and variance --
for instance, N(2,4) is encoded as:
<variable id="gaussian_example">
<distrib type="gaussian">
<mean>-1</mean>
<variance>3</variance>
</distrib>
</variable>
Original issue reported on code.google.com by [email protected]
on 18 Oct 2014 at 1:03
Hi.
I downloaded OpenDial toolkit and run on Mac OS X.
When I open example file, the RuntimeException occured like below.
Cannot use domain: java.lang.RuntimeException: Invalid tag in <domain>: userTurn
thanks.
When I import opendial as an external jar in Intellj IDEA with Maven, and take the example_flightbooking.xml
as an example, an exception occurs as following:
Exception in thread "main" java.lang.RuntimeException: Resource cannot be found: null\example-flightbooking_nlu.xml
Then I tracked the exception, and I supposed that there may be something wrong with XMLDomainReader
in line 199.
String fileName =mainNode.getAttributes().getNamedItem("href").getNodeValue();
String filepath = rootpath + File.separator + fileName; // Line 199
domain.addImportedFiles(new File(filepath));
Document subdoc = XMLUtils.getXMLDocument(filepath);
The problem is that, when rootpath
is null, the filepath
will start with "null", maybe this line should be replaced by
String filepath = rootpath==null?"":rootpath + File.separator + fileName;
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.